如何在python中将这两个数据帧合并为一个

如何在python中将这两个数据帧合并为一个,python,pandas,dataframe,Python,Pandas,Dataframe,作为pd进口熊猫 数据1=[[2000,'size56'],[2001,'size56'],[2002,'size09']] 列1=['a','b'] df1=pd.DataFramedata=data1,columns=columns1 打印DF1 数据2=['3000'、'size56']、['3001'、'size56']、['3002'、'size56']、['3003'、'size09'] 第2列=['a','b'] df2=pd.DataFramedata=data2,columns

作为pd进口熊猫 数据1=[[2000,'size56'],[2001,'size56'],[2002,'size09']] 列1=['a','b'] df1=pd.DataFramedata=data1,columns=columns1 打印DF1 数据2=['3000'、'size56']、['3001'、'size56']、['3002'、'size56']、['3003'、'size09'] 第2列=['a','b'] df2=pd.DataFramedata=data2,columns=columns2
df1['g']=df1.groupby['b'].cumcount df2['g']=df2.groupby['b'].cumcount df=pd.mergedf1,df2,on=['b','g'],how='inner'
printdf你可以试试这个,它的灵感来自@jezrael post-


由于您试图在两个数据帧的索引上建立关联,所以可以简单地使用函数。Pandas文档中有一个非常好的部分,解释了将多个数据帧关联在一起的各种方法。有关您的示例,请参阅下文

d1=[ {'a':2000,'b':'size56'}, {'a':2001,'b':'size56'}, {'a':2002,'b':'size09'}, ] d2=[ {'A':3000,'B':'size56'}, {'A':3001,'B':'size56'}, {'A':3002,'B':'size56'}, {'A':3003,'B':'size09'}, ] df1=pd.DataFramed1 df2=pd.DataFramed2 df1.joindf2 出[2]: a b a b 0 2000尺寸56 3000尺寸56 1 2001尺码56 3001尺码56 2 2002尺码09 3002尺码56
df1:a b 0 2000尺寸56 1 2001尺寸56 2 2002尺寸09这是否回答了您的问题?顺便说一句,您可以使用df.to_剪贴板复制数据帧,以便将其发布到Stackoverflow上。纯代码编写请求在Stackoverflow上是离题的-我们希望这里的问题与特定的编程问题相关-但我们很乐意帮助您自己编写!告诉我们,你被困在哪里了。这也有助于我们更好地回答您的问题。@jezrael:您确定这是真的复制品吗?对于索引2,A中的行包含3003,因为它是B=size09…out[2]的第一行:2 2002 size09 3002 size56我希望获得2002 size09 3003 size09请编辑您的问题以显示您想要的实际输出,因为显然您想要的输出与您提供的不同。另外,请提供有关如何关联这两个数据帧的更多信息。df1['g']=df1.groupby['b'].cumcount df2['g']=df2.groupby['b'].cumcount df=pd.mergedf1,df2,on=['b','g'],我是如何得到答案的,请看上面。谢谢!输出[2]a b b b 0 2000尺寸56 3000尺寸56 1 2000尺寸56 3001尺寸56 2 2000尺寸56 3002尺寸56 3 2001尺寸56 3000尺寸56 4 2001尺寸56 3001尺寸56 5 2001尺寸56 3002尺寸56 6 2002尺寸09 3003尺寸09不是我的需要。请检查编辑的答案。
import pandas as pd
df1['c'] = df1.groupby(['b']).cumcount()
df2['c'] = df2.groupby(['B']).cumcount()
df = pd.merge(df1,df2,left_on=['b','c'], right_on=['B','c'])
df
    a       b    c     A       B
0  2000  size56  0   3000   size56
1  2001  size56  1   3001   size56
2  2002  size09  0   3003   size09