[英]Pandas: How to append new columns to all rows in data frame
I have two data frames: 我有两个数据框:
df1 = pd.DataFrame(data={
'ColumnA': ['A1','A2','A3'],
'ColumnB' : [ 'B1','B2','B3'],
'ColumnC' : [ 'C1','C2','C3']
})
df2 = pd.DataFrame(data={
'id': ['1'],
'Value1' : [ 'v1'],
'Value2' : [ 'v2']
})
ColumnB ColumnC columnA id
0 B1 C1 A1 1
1 B2 C2 A2 1
2 B3 C3 A3 1
Value1 Value2 id
0 v1 v2 1
And looking to get df3 where all rows on df1 will have columns from df2. 并希望获得df3,其中df1上的所有行都将包含来自df2的列。
ColumnB ColumnC columnA id Value1 Value2
0 B1 C1 A1 1 v1 v2
1 B2 C2 A2 1 v1 v2
2 B3 C3 A3 1 v1 v2
Currently im doing it this way: 目前我这样做:
id = df2['id'][0]
df1['id'] = id
df3 = df1.merge(df2,left_on='id',right_on='id',how='left')
What is the better way to do it? 有什么更好的方法呢?
Using pd.concat
with ffill()
将
pd.concat
与ffill()
pd.concat([df1,df2],axis=1).ffill()
Out[388]:
ColumnA ColumnB ColumnC Value1 Value2 id
0 A1 B1 C1 v1 v2 1
1 A2 B2 C2 v1 v2 1
2 A3 B3 C3 v1 v2 1
Another way 其他方式
In [1728]: df1.assign(k=0).merge(df2.assign(k=0), on='k').drop('k', 1)
Out[1728]:
ColumnA ColumnB ColumnC Value1 Value2 id
0 A1 B1 C1 v1 v2 1
1 A2 B2 C2 v1 v2 1
2 A3 B3 C3 v1 v2 1
If you don't have NaN
in data. 如果您没有数据中的
NaN
。
In [1734]: df1.join(df2).ffill()
Out[1734]:
ColumnA ColumnB ColumnC Value1 Value2 id
0 A1 B1 C1 v1 v2 1
1 A2 B2 C2 v1 v2 1
2 A3 B3 C3 v1 v2 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.