如何使用方法链更改pandas数据帧中列的顺序



使用括号可以很容易地更改pandas数据帧中列的顺序(请参阅下文,我在其中切换前两列(。然而,我找不到任何关于如何使用方法链来实现这一点的信息,这在R中使用dplyr::select()很容易。例如,我想要这样的东西:df.reorder_columns(["num_wings","num_legs","num_specimen_seed"](,其中";列的排序";是一种虚构的方法。

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
'num_wings': [2, 0, 0, 0],
'num_specimen_seen': [10, 2, 1, 8]},
index=['falcon', 'dog', 'spider', 'fish'])
df[["num_wings","num_legs","num_specimen_seen"]]

我知道在python宇宙中有一些dplyr复制猫,但我想避免使用这些包,因为它们被认为是"出血边缘";

使用.loc访问器。这适用于行和列。


df = (
pd.DataFrame({
'num_legs': [2, 4, 8, 0],
'num_wings': [2, 0, 0, 0],
'num_specimen_seen': [10, 2, 1, 8]
}, index=['falcon', 'dog', 'spider', 'fish'])
.loc[
['dog', 'spider', 'falcon', 'fish'], # rows
["num_wings", "num_legs", "num_specimen_seen"] # columns
]
)

也许你可以试试这样的东西:

import pandas as pd
df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
'num_wings': [2, 0, 0, 0],
'num_specimen_seen': [10, 2, 1, 8]},
index=['falcon', 'dog', 'spider', 'fish'])
columnsNames = ['num_wings', 'num_legs', 'num_specimen_seen']
df.reindex(columns=columnsNames)

或者,只需使用sorted方法对列进行排序:

df = pd.DataFrame({'c_num_legs_2': [2, 4, 8, 0],
'b_num_wings_1': [2, 0, 0, 0],
'a_num_specimen_seen_3': [10, 2, 1, 8]},
index=['falcon', 'dog', 'spider', 'fish'])
cols_reorder = sorted(df.columns, key=lambda col: col.rsplit('_')[-1])
df[cols_reorder]
print(cols_reorder)
# ['b_num_wings_1', 'c_num_legs_2', 'a_num_specimen_seen_3']

print(df.sort_index(axis=1))
a_num_specimen_seen_3  b_num_wings_1  c_num_legs_2
falcon                     10              2             2
dog                         2              0             4
spider                      1              0             8
fish                        8              0             0

print(df.sort_index(axis=1, ascending=False))
c_num_legs_2  b_num_wings_1  a_num_specimen_seen_3
falcon             2              2                     10
dog                4              0                      2
spider             8              0                      1
fish               0              0                      8

相关内容

  • 没有找到相关文章

最新更新