我有一个DataFrame如下。
df = pd.DataFrame(
{
"code": ["AA", "BB", "CC","DD"],
"YA" : [2,1,1,np.nan],
"YD" : [1,np.nan,np.nan,1],
"ZB" : [1,np.nan,np.nan,np.nan],
"ZD" : [1,np.nan,np.nan,1]
}
)
另外,我有一个排序列表。
sort_list = ['YD','YA', 'ZD', 'YB', 'ZA', 'ZB']
我正在尝试基于排序列表添加缺少的列,并对DataFrame进行排序。
预期输出:
code YD YA ZD YB ZA ZB
0 AA 1.0 2.0 1.0 NaN NaN 1.0
1 BB NaN 1.0 NaN NaN NaN NaN
2 CC NaN 1.0 NaN NaN NaN NaN
3 DD 1.0 NaN 1.0 NaN NaN NaN
我可以使用以下代码获得结果。有另一种(简单的)方法可以做到这一点吗?
我的代码:
col_list = list(set(sort_list) - set(df.columns.to_list()))
df1 = pd.DataFrame(index=df.index, columns=col_list)
df1 = df1.fillna(np.nan)
df2 = df.join(df1, how='left')
df2 = df2.set_index('code')
df2 = df2[sort_list]
df2 = df2.reset_index()
df2
尝试使用reindex
:
df = df.reindex(columns=['code'] + sort_list)
df:
code YD YA ZD YB ZA ZB
0 AA 1.0 2.0 1.0 NaN NaN 1.0
1 BB NaN 1.0 NaN NaN NaN NaN
2 CC NaN 1.0 NaN NaN NaN NaN
3 DD 1.0 NaN 1.0 NaN NaN NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句