【发布时间】:2020-07-30 03:53:49
【问题描述】:
我有一个如下的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
【问题讨论】:
标签: python python-3.x pandas dataframe