Python 基于另一个数据帧的值向数据帧添加新列
我有两个python数据帧df1和df2。Python 基于另一个数据帧的值向数据帧添加新列,python,python-3.x,pandas,dataframe,merge,Python,Python 3.x,Pandas,Dataframe,Merge,我有两个python数据帧df1和df2。 df2有A、B、C列。 df1有A、B、D列,其中A和B中的一对值可能重复 我想添加一个新的列C,以便它从df2中获取值。 例如: df2具有以下条目:[(1,2,0)、(2,1,3)、(3,4,10)] 和 df1有条目[(1,2,2)、(1,2,5)、(3,4,5)、(1,2,7)、(3,4,3)] 我想要的最终结果是[(1,2,2,0),(1,2,5,0),(3,4,5,10),(1,2,7,0),(3,4,3,10)]。 我用python编写了
df2
有A、B、C列。
df1
有A、B、D列,其中A和B中的一对值可能重复
我想添加一个新的列C,以便它从df2中获取值。
例如:
df2
具有以下条目:[(1,2,0)、(2,1,3)、(3,4,10)]
和
df1
有条目[(1,2,2)、(1,2,5)、(3,4,5)、(1,2,7)、(3,4,3)]
我想要的最终结果是[(1,2,2,0),(1,2,5,0),(3,4,5,10),(1,2,7,0),(3,4,3,10)]。
我用python编写了以下代码
result = pd.merge(df1,df2,on=['A','B'])
result.head()
但是结果是一个空的数据帧。它不起作用,因为您在创建原始数据帧时使用了元组。这将导致一列保存元组,而不是A、B、C和D列。下面是有效的代码:
import pandas as pd
data1 = [[1,2,2], [1,2,5], [3,4,5], [1,2,7], [3,4,3]]
data2 = [[1,2,0], [2,1,3], [3,4,10]]
df1 = pd.DataFrame(data1, columns=['A', 'B', 'D'])
df2 = pd.DataFrame(data2, columns=['A', 'B', 'C'])
df = pd.merge(df1, df2, on=['A', 'B'])
#df['tuple'] = df.apply(lambda row: (row['A'], row['B'], row['C'], row['D']), axis=1)
df['tuple'] = list(zip(df.A, df.B, df.C, df.D))
df
输出为:
A B D C tuple
0 1 2 2 0 (1, 2, 0, 2)
1 1 2 5 0 (1, 2, 0, 5)
2 1 2 7 0 (1, 2, 0, 7)
3 3 4 5 10 (3, 4, 10, 5)
4 3 4 3 10 (3, 4, 10, 3)
所以你想要一个包含所有唯一值的元组的新列???请显示你想要的输出并提供一个。