Python 3.x 如何使用pandas来填补与其他数据帧相比的行间距?
我想比较df1和df2,只填充空格而不覆盖其他值。我不知道如何在不覆盖或创建额外列的情况下实现这一点 我可以通过将df2转换为字典并使用df1进行映射来实现这一点吗Python 3.x 如何使用pandas来填补与其他数据帧相比的行间距?,python-3.x,pandas,Python 3.x,Pandas,我想比较df1和df2,只填充空格而不覆盖其他值。我不知道如何在不覆盖或创建额外列的情况下实现这一点 我可以通过将df2转换为字典并使用df1进行映射来实现这一点吗 df1 = pd.DataFrame({'players name':['ram', 'john', 'ismael', 'sam', 'karan'], 'hobbies':['jog','','photos','','studying'], 'sport
df1 = pd.DataFrame({'players name':['ram', 'john', 'ismael', 'sam', 'karan'],
'hobbies':['jog','','photos','','studying'],
'sports':['cricket', 'basketball', 'chess', 'kabadi', 'volleyball']})
df1:
还有,df
df2 = pd.DataFrame({'players name':['jagan', 'mohan', 'john', 'sam', 'karan'],
'hobbies':['riding', 'tv', 'sliding', 'jumping', 'studying']})
df2:
我想要这样的输出:
试试这个:
df1['hobbies'] = (df1['players name'].map(df2.set_index('players name')['hobbies'])
.fillna(df1['hobbies']))
df1
输出:
players name hobbies sports
0 ram jog cricket
1 john sliding basketball
2 ismael photos chess
3 sam jumping kabadi
4 karan studying volleyball
如果空格为
NaN
值
df1 = pd.DataFrame({"players name":["ram","john","ismael","sam","karan"],
"hobbies":["jog",pd.np.NaN,"photos",pd.np.NaN,"studying"],
"sports":["cricket","basketball","chess","kabadi","volleyball"]})
然后
输出:
players name hobbies sports
0 ram jog cricket
1 john sliding basketball
2 ismael photos chess
3 sam jumping kabadi
4 karan studying volleyball
df1 = pd.DataFrame({"players name":["ram","john","ismael","sam","karan"],
"hobbies":["jog",pd.np.NaN,"photos",pd.np.NaN,"studying"],
"sports":["cricket","basketball","chess","kabadi","volleyball"]})
dicts = df2.set_index("players name")['hobbies'].to_dict()
df1['hobbies'] = df1['hobbies'].fillna(df1['players name'].map(dicts))
players name hobbies sports
0 ram jog cricket
1 john sliding basketball
2 ismael photos chess
3 sam jumping kabadi
4 karan studying volleyball