如何从2个数据框合并2行

时间:2019-09-19 10:51:43

标签: python-3.x

我正在尝试通过左连接将数据集中的一行与另一行合并

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'>

预先感谢您的帮助

1 个答案:

答案 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')