我希望能按条件重新排列列。 假如国家是'日本',我需要将last_name和first_name颠倒位置。
df = pd.DataFrame([['France','Kylian', 'Mbappe'],
['Japan','Hiroyuki', 'Tajima'],
['Japan','Shiji', 'Kagawa'],
['England','Harry', 'Kane'],
['Japan','Yuya', 'Ohsako'],
['Portuguese','Cristiano', 'Ronaldo']],
columns=['country', 'first_name', 'last_name'])
当前输出为
country first_name last_name
0 France Kylian Mbappe
1 Japan Hiroyuki Tajima
2 Japan Shiji kagawa
3 England Harry Kane
4 Japan Yuya Ohsako
5 Portuguese Cristiano Ronaldo
我希望将其改为以下内容。
country first_name last_name
0 France Kylian Mbappe
1 Japan Tajima Hiroyuki
2 Japan Kagawa Shinji
3 England Harry Kane
4 Japan Ohsako Yuya
5 Portuguese Cristiano Ronaldo
有什么想法吗?
df['first_name'] = df['first_name1']
,你可以直接使用.rename
重命名列。你还应该考虑只计算一次带有“country”的条件,并将其保存到某个变量以供重复使用。 - cs95first_name1
列仍将存在,我是对的吧? - Sociopathdf.rename({'first_name1': 'first_name'}, axis=1)
仅重命名列(而非复制它)。这比创建新列并删除旧列更好。 - cs95first_name
。 - Sociopathdf['last_name'] = np.where(mask, df.pop('first_name'), df.pop('last_name'))
,然后重命名就可以了。但是现在有太多事情要做了。也许现在这样就可以了。 - cs95