![](/img/trans.png)
[英]How can i combine two Pandas dataframes while keeping columns of both in the new dataframe?
[英]Using pandas, how can I compare the values between 2 columns from two dataframes and push them to a new dataframe?
所以我是Python的新手,我正在尝试使用Pandas使用两个现有值中的值来创建一个新的数据帧。 基本上使用这些数据帧:
df1= AB a '1' '3' b '4' '3' c '3' '2' d '9' '1'
df2= CD a '5' '1' b '2' '0' c '4' '2' d '1' '9'
我需要创建一个循环,将df1 [A]中每行的值与每行df2 [C]的值进行比较。 如果值相等,我需要加入df1 [A,B]和df2 [C]并将该行推送到第三个数据帧。 因此,对于上面的示例,结果应如下所示:
dfnew= ABD a '1' '3' '9' b '4' '3' '2'
由于并非我使用的所有值都是整数,因此我还需要将值视为字符串。
我一直在检查其他类似的问题,但没有一个答案似乎让我完全得到我需要做的。
您也可以使用pd.Series.map
df1.assign(D=df1.A.map(dict(zip(df2.C, df2.D)))).dropna()
A B D
a '1' '3' '9'
b '4' '3' '2'
细节
只有map
和assign
我们留下了我们需要删除的行。
df1.assign(D=df1.A.map(df2.set_index('C').D))
A B D
a '1' '3' '9'
b '4' '3' '2'
c '3' '2' NaN
d '9' '1' NaN
我决定用简单的dropna
丢弃它们。 更确切地说,我们可能应该将dropna
限制在D
列。
df1.assign(D=df1.A.map(df2.set_index('C').D)).dropna(subset=['D'])
A B D
a '1' '3' '9'
b '4' '3' '2'
我们也可以使用其他方式。 但那不是真正的问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.