首页 > 解决方案 > 将一行 DataFrame 添加到另一个 DataFrame 的优雅方式

问题描述

我有两个DataFrames,其中一个是单行的DataFrame。我想dataframe在较大的所有行中添加一行。我可以解决它,但我正在寻找一个更简单的解决方案:

import pandas as pd
df1 = pd.DataFrame({'C':['car'],'D':['bus']})
print(df1)
     C    D
0  car  bus

df2 = pd.DataFrame({'A':[1,2,3],'B':[8,2,0]})
print(df2)
   A  B
0  1  8
1  2  2
2  3  0

我想将数据帧一号线加入较大的一号线。结果应该是。

   A  B    C    D
0  1  8  car  bus
1  2  2  car  bus
2  3  0  car  bus

我的尝试:dummy在两个 DataFrames 中都创建了一个列并做了一个left join,但这并不优雅。我相信会有更简单的解决方案。

标签: pythonpandasdataframe

解决方案


我认为最优雅的是 use DataFrame.assign,但必须使用字符串列名:

df2 = df2.assign(**df1.iloc[0])
print (df2)
   A  B    C    D
0  1  8  car  bus
1  2  2  car  bus
2  3  0  car  bus


df1.columns=[1,8]
print (df1)
     1    8
0  car  bus

df2 = df2.assign(**df1.iloc[0])
print (df2)

TypeError:assign() 关键字必须是字符串

如果匹配第一个索引值,则另一种解决方案有效:

df2 = df2.join(df1.reindex(df2.index, method='ffill'))
print (df2)
   A  B    C    D
0  1  8  car  bus
1  2  2  car  bus
2  3  0  car  bus

推荐阅读