我有两个数据框 df1 和 df2:
df1 = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"],
},
)
df1
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
df2
df2 = pd.DataFrame(
{
"E": ["A4"],
"F": ["B4"],
"G": ["C4"],
},
)
df2
E F G
0 A4 B4 C4
当我进行连接时,仅填充 df2 的第一行,因为它是单行,其余的为 NULL
output = df1.join(df2)
A B C D E F G
0 A0 B0 C0 D0 A4 B4 C4
1 A1 B1 C1 D1 NaN NaN NaN
2 A2 B2 C2 D2 NaN NaN NaN
3 A3 B3 C3 D3 NaN NaN NaN
有没有办法加入这样的行而不是 NaN 在其余行中重复,如下所示
期望的输出
A B C D E F G
0 A0 B0 C0 D0 A4 B4 C4
1 A1 B1 C1 D1 A4 B4 C4
2 A2 B2 C2 D2 A4 B4 C4
3 A3 B3 C3 D3 A4 B4 C4
第一个想法只是向前填充缺失值,如果有一些缺失值则不起作用df1
- 也替换它们:
output = df1.join(df2).ffill()
print (output)
A B C D E F G
0 A0 B0 C0 D0 A4 B4 C4
1 A1 B1 C1 D1 A4 B4 C4
2 A2 B2 C2 D2 A4 B4 C4
3 A3 B3 C3 D3 A4 B4 C4
或者使用由 Dataframe 的第一列创建的解包 - 缺点是如果整数列名称DataFrame.assign
在:Series
df2
output = df1.assign(**df2.iloc[0])
或者DataFrame.reindex
在两个s中使用相同的索引DataFrame
,也是通过method='ffill'
参数重复的值:
output = df1.join(df2.reindex(df1.index, method='ffill'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句