我有两个数据框A和B,它们都有数字列名称。以下是数据框A的结构
| 1001 | 1002 | 1003 | 1004 |
----------------------------------
| value | value | value | value |
| value | value | value | value |
| value | value | value | value |
数据框B的结构
| 9999 | 1003 |
----------------
| value | value_x |
我正在尝试获取此类数据框
| 1001 | 1002 | 1003 | 1004 | 9999 |
----------------------------------
| value | value | value | value | nan |
| value | value | value | value | nan |
| value | value | value | value | nan |
| nan | nan | value_x | nan | value |
我正在尝试这段代码,但是没有用。相反,它复制了列1003
而不是合并值
X=A.append(B)
正确的方法是什么?
答案 0 :(得分:3)
您正在寻找数据帧串联:
A = pd.DataFrame(np.random.random((5,3)), columns=[0,1,2])
A
Out:
0 1 2
0 0.406870 0.590722 0.426807
1 0.963046 0.699453 0.935914
2 0.850077 0.251939 0.140186
3 0.278246 0.302475 0.451266
4 0.643660 0.792514 0.875318
B = pd.DataFrame(np.random.random((5,2)), columns=[2, 3])
B
Out:
2 3
0 0.921935 0.981288
1 0.384787 0.921707
2 0.667739 0.488965
3 0.329663 0.779093
4 0.320227 0.744742
pd.concat([A, B], ignore_index=True)
Out:
0 1 2 3
0 0.406870 0.590722 0.426807 NaN
1 0.963046 0.699453 0.935914 NaN
2 0.850077 0.251939 0.140186 NaN
3 0.278246 0.302475 0.451266 NaN
4 0.643660 0.792514 0.875318 NaN
5 NaN NaN 0.921935 0.981288
6 NaN NaN 0.384787 0.921707
7 NaN NaN 0.667739 0.488965
8 NaN NaN 0.329663 0.779093
9 NaN NaN 0.320227 0.744742
答案 1 :(得分:0)
您需要相同类型的列,例如str
:
B.columns = B.columns.astype(str)
或int
:
A.columns = A.columns.astype(int)
然后您的解决方案运行良好,仅添加了ignore_index=True
以避免重复的索引:
X = A.append(B, ignore_index=True)