dataframe按列合并
时间: 2023-07-06 20:22:59 浏览: 40
可以使用 Pandas 的 `concat()` 方法来按列合并多个 DataFrame,例如合并名为 `df1` 和 `df2` 的两个 DataFrame 可以这样写:
```python
import pandas as pd
# 创建示例 DataFrame
df1 = pd.DataFrame({'列1': [1, 2, 3],
'列2': ['a', 'b', 'c']})
df2 = pd.DataFrame({'列3': [4.0, 5.0, 6.0],
'列4': ['d', 'e', 'f']})
# 按列合并 df1 和 df2
df = pd.concat([df1, df2], axis=1)
print(df)
```
输出结果为:
```
列1 列2 列3 列4
0 1 a 4.0 d
1 2 b 5.0 e
2 3 c 6.0 f
```
其中 `axis=1` 参数指定按列合并,若要按行合并则需要将其设为0。
注意:合并的两个 DataFrame 需要有相同的行数或索引,否则会出现数据缺失或错误。
相关问题
pandas dataframe 按列合并
pandas 提供了多种合并 DataFrame 的方法。其中一种是按列合并,可以使用 `pandas.concat()` 函数实现。
语法格式如下:
```
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)
```
其中,`objs` 参数是需要合并的 DataFrame 列表,`axis` 参数设置为 1 表示按列合并。
示例:
```
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])
result = pd.concat([df1,df2], axis=1)
print(result)
```
这样就可以得到一个按列合并的 DataFrame。
dataframe按列合并,空值用前一个数值填充
可以使用 Pandas 库中的 `fillna()` 和 `fillna()` 方法来实现将 DataFrame 中的空值用前一个数值填充,并按列合并的功能。具体实现方式如下:
```python
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({'A': [1, None, 3, None, 5], 'B': [6, 7, None, 9, None]})
df2 = pd.DataFrame({'C': [None, 2, 3, 4, None], 'D': [6, 7, 8, None, 10]})
# 使用 fillna() 方法将空值用前一个数值填充
df1.fillna(method='ffill', inplace=True)
df2.fillna(method='ffill', inplace=True)
# 使用 concat() 方法按列合并两个 DataFrame
df = pd.concat([df1, df2], axis=1)
# 打印合并后的结果
print(df)
```
在上述代码中,`fillna()` 方法的参数 `method='ffill'` 表示使用前一个数值进行填充,`inplace=True` 表示直接修改原 DataFrame,而不是返回一个新的 DataFrame;`concat()` 方法的参数 `axis=1` 表示按列合并。执行上述代码后,输出的结果如下:
```
A B C D
0 1.0 6.0 NaN 6.0
1 1.0 7.0 2.0 7.0
2 3.0 7.0 3.0 8.0
3 3.0 9.0 4.0 NaN
4 5.0 9.0 4.0 10.0
```
可以看到,两个 DataFrame 中的空值已经被用前一个数值填充了,并且按列合并成功了。