如何合并两个数据帧的一个有空数据帧

2024-04-26 23:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

有两个df

df1和df2

df1型:

   21   |   20   |   1   |  2   | 3  | 4 | 5  | 8 | 9 | 10

df2型:

1   |   2    |   3    |  4   | 5  
abc     asdf    df       132   248
ban     cat     ball     bcd   aisc

如何合并两个df以便获得所需的输出

所需输出:

  21   |   20   |   1   |  2   | 3  | 4   |   5  | 8  | 9   | 10
  nan      nan     abc     asdf  df   132     248  nan  nan   nan
  nan      nan     ban     cat   ball bcd     aisc nan  nan   nan

Tags: dfnancatdf1df2abcballasdf
1条回答
网友
1楼 · 发布于 2024-04-26 23:17:17

您可以通过^{} [pandas-doc]获得:

>>> df1
Empty DataFrame
Columns: [21, 20, 1, 2, 3, 4, 5, 8, 9, 10]
Index: []
>>> df2
     1     2     3    4     5
0  abc  asdf    df  132   248
1  ban   cat  ball  bcd  aisc
>>> pd.concat((df1, df2))
     1   10     2   20   21     3    4     5    8    9
0  abc  NaN  asdf  NaN  NaN    df  132   248  NaN  NaN
1  ban  NaN   cat  NaN  NaN  ball  bcd  aisc  NaN  NaN

如文件所述,这将:

Concatenate pandas objects along a particular axis with optional set logic along the other axes.

Can also add a layer of hierarchical indexing on the concatenation axis, which may be useful if the labels are the same (or overlapping) on the passed axis number.

因此,它将两个数据帧的列名进行“并集”,然后为相应列的两个数据帧之一中缺少的列填充NaN。你知道吗

Note: The name of the columns should evidently not occur multiple times. If that happens, than it will of course error, since it is not clear how to handle such situation.

如果一个列名在数据帧中多次出现,可以使用以下方法解决:

df1 = pd.Dataframe(columns=df1.columns.unique())

作为预处理步骤。你知道吗

相关问题 更多 >