合并两个没有键列的数据帧

时间:2018-03-26 17:15:42

标签: python pandas dataframe

我有一个要求,我想合并两个没有任何键列的数据帧。 enter image description here

从输入表中,我将前三列视为一个数据帧,将最后一列视为另一列。我的计划是对第二个数据框进行排序,然后将其合并到第一个没有任何键列的第一个数据框,使其看起来像上面的输出。 是否有可能以这种方式合并或者是否有其他选择?

3 个答案:

答案 0 :(得分:2)

一种方法是在过滤掉空值后使用pd.DataFrame.join

来自@ALollz的数据。

import pandas as pd

df1 = pd.DataFrame({'Country': ['USA', 'UK', 'Finland', 'Spain', 'Australia']})
df2 = pd.DataFrame({'Comments': ['X', None, 'Y', None, 'Z']})

res = df1.join(pd.DataFrame(list(filter(None, df2.values)), columns=['comments']))

结果:

     Country comments
0        USA        X
1         UK        Y
2    Finland        Z
3      Spain      NaN
4  Australia      NaN

答案 1 :(得分:1)

如果通过“排序第二个数据帧”意味着将NULL值移动到列表的末尾并保持其余的顺序,那么这将完成工作。

import pandas as pd
df1 = pd.DataFrame({'Country': ['USA', 'UK', 'Finland', 'Spain', 'Australia'],
                   'Name': ['Sam', 'Chris', 'Jeff', 'Kartik', 'Mavenn']})
df2 = pd.DataFrame({'Comments': ['X', None, 'Y', None, 'Z']})

df1['Comments'] = df2[df2.Comments.notnull()].reset_index().drop(columns='index')

     Country    Name Comments
0        USA     Sam        X
1         UK   Chris        Y
2    Finland    Jeff        Z
3      Spain  Kartik      NaN
4  Australia  Mavenn      NaN

答案 2 :(得分:1)

IIUC:

input['Comments'] = input.Comments.sort_values().values

输出:

  Comments    Country    Name
1        X        USA     Sam
2        Y         UK   Chris
3        Z    Finland    Jeff
4      NaN      Spain  Kartik
5      NaN  Australia   Maven