合并两个不同的数据框以显示所有可能的迭代

时间:2017-05-08 18:55:15

标签: python dataframe

我希望将数据帧df1和df2结合起来在Python中获取df3,最好是单行(,对于df1.LETS中的所有x,没有“......” )。

我目前因为使用Google-fu而失言,所以我在StackExchange,希望其他程序员可以帮助我填补这种困境。

谢谢!

df1    df2      df3
LETS   NUMS     LETS  NUMS
 A      1        A     1
 B      2        A     2
        3        A     3
        4        A     4
                 B     1
                 B     2
                 B     3
                 B     4

2 个答案:

答案 0 :(得分:2)

您可以使用:

com.sun.jersey.api.client.UniformInterfaceException: 
POST http://auth.uidai.gov.in/1.6/public/6/9/MMZS5K8bEkGWFQe6y_ruBu9tFR2yQFQkqmECCpp9veRawhue1oGpa4s 
returned a response status of 503
带有df1 = pd.DataFrame({'LETS':list('AB')}) df2 = pd.DataFrame({'NUMS':range(1,5)}) + merge列且cross joinassign帮助列constant

A解决方案:

df = pd.merge(df1.assign(A=1), df2.assign(A=1), on='A').drop('A', axis=1)
print (df)
  LETS  NUMS
0    A     1
1    A     2
2    A     3
3    A     4
4    B     1
5    B     2
6    B     3
7    B     4

另一个解决方案drop和pandas 0.20.1中的新功能 - MultiIndex.from_product

df = pd.MultiIndex.from_product([df1['LETS'], df2['NUMS']]).to_frame()
df.columns = ['LETS','NUMS']
print (df)
    LETS  NUMS
A 1    A     1
  2    A     2
  3    A     3
  4    A     4
B 1    B     1
  2    B     2
  3    B     3
  4    B     4

print (df.reset_index(drop=True))
  LETS  NUMS
0    A     1
1    A     2
2    A     3
3    A     4
4    B     1
5    B     2
6    B     3
7    B     4

答案 1 :(得分:1)

pd.DataFrame(index=pd.MultiIndex.from_product([df1.LETS, df2.NUMS],
                          names=("LETS", "NUMS"))).reset_index()
#   LETS  NUMS
#0    A     1
#1    A     2
#2    A     3
#3    A     4
#4    B     1
#5    B     2
#6    B     3
#7    B     4