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