我有两个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中编写了以下代码
result = pd.merge(df1,df2,on=['A','B'])
result.head()
但是结果是一个空的数据框。
答案 0 :(得分:0)
它不起作用,因为在创建原始数据帧时您正在使用元组。这将导致一列包含元组,而不是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)