熊猫将数据框附加到另一个不合并列值

时间:2018-08-31 06:37:12

标签: python pandas dataframe

我有两个数据框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)

正确的方法是什么?

2 个答案:

答案 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)