【问题标题】:How to map a dataframe df (having two columns) with another dataframe df1(having three columns) and update it如何将数据帧 df(具有两列)与另一个数据帧 df1(具有三列)映射并更新它
【发布时间】:2023-03-05 01:27:02
【问题描述】:

有一个带有值的 df1

      0                1
0  abc def          unknown
1  uvw xyz          unknown
2  cricket ball     unknown
3  tennis racket    unknown

和带有值的 df2

     0        0         1
0   abc      def     password
1   cricket  ball    password1
2   tennis  racket   password2






.....

22610   uvw      xyz     password3

应将 df1 和 df2 映射为 0 值并更新 df1 中的 1 列

输出应该是

      0                1
0  abc def         | password
1  uvw xyz         | password3
2  cricket ball   | password1
3  tennis racket  | password2

【问题讨论】:

标签: python python-3.x pandas dataframe


【解决方案1】:

你需要:

在 df2 中创建新列,其中包含连接两列以匹配 df1 列:

df2['concat']= df2[0]+str(' ')+df2[0]
# added space to match with df1 and drop the df2[0] columns

将df1[0]的列名重命名为'concat':

df1.rename({0:'concat'},inplace =True,axis=1)

使用 pandas 的合并方法:

df1.merge(df2,on='concat')

你会得到预期的结果。

【讨论】:

  • keyerror:0 for this line df2['concat']= df2[0]+str(' ')+df2[0]
  • 也许你的列名是字符串格式的。把它放在逗号 df2['0'] 中。在加载数据时,如果重复,熊猫也会更新列名。避免给列的名称重复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
相关资源
最近更新 更多