我正在尝试通过左连接将数据集中的一行与另一行合并
import pandas as pd
import numpy as np
#df = pd.DataFrame(np.array([, , [3656, 2532, 3652],["AFF", "KK", "DD"]]), columns=['Grp', 'A', 'B','C'])
# intialise data of lists.
data = {'Grp':[36, 25, 36,36], 'A':['GP', 'GP', 'GO','KO'],'B': [3656, 2532, 3652,3645],'C': ["AFF", "KK", "DD","ss"]}
# Create DataFrame
df = pd.DataFrame(data)
# intialise data of lists.
data2 = {'Grp':[36, 25, 36,36], 'A':['GP', 'GP', 'GO','JO'],'B': [3656, 25, 36,24],'C': ["AFF", "KK", "DD",'rr']}
# Create DataFrame
df2 = pd.DataFrame(data2)
for index, row in df2.iterrows():
df_left_2D = pd.merge(df, row.iloc[3], on=['A','C'], how='left')
但是我有这个错误:
ValueError: can not merge DataFrame with instance of type <class 'str'>
预先感谢您的帮助
答案 0 :(得分:1)
您可能要尝试的是
pd.merge(df, df2, on=['A','C'], how='left')
您的代码给出了错误,因为row.iloc[3]
是一个字符串,并且您试图将df与不起作用的字符串合并
您可以像这样解决代码中的错误,但是为什么要一次合并一行?
for i in df2.index:
df_left_2D = pd.merge(df, df2.iloc[[i]], on=['A','C'], how='left')