joh*_*ohn 2 python indexing dataframe pandas
最小可重现示例:
import pandas as pd
data = {('Percent', 'Female'): {'Parents': 26.489226869455006, 'Spouse': 31.875792141951838}, ('Percent', 'Male'): {'Parents': 34.49901768172888, 'Spouse': 20.903732809430256}, ('N', 'Female'): {'Parents': 1578.0, 'Spouse': 1578.0}, ('N', 'Male'): {'Parents': 2545.0, 'Spouse': 2545.0}, ('Count', 'Female'): {'Parents': 418.0, 'Spouse': 503.0}, ('Count', 'Male'): {'Parents': 878.0, 'Spouse': 532.0}}
df = pd.DataFrame.from_dict(data)
df
Run Code Online (Sandbox Code Playgroud)
df:
Percent N Count
Female Male Female Male Female Male
Parents 26.489227 34.499018 1578.0 2545.0 418.0 878.0
Spouse 31.875792 20.903733 1578.0 2545.0 503.0 532.0
Run Code Online (Sandbox Code Playgroud)
我想按性别而不是统计数据对我的列进行分组,就像这个所需的输出一样:
Female Male
N Count Percent N Count Percent
Parents 1578.0 418.0 26.48.. 2545.0 878.0 34.49..
Spouse 1578.0 503.0 31.87.. 2545.0 532.0 20.90..
Run Code Online (Sandbox Code Playgroud)
我知道如何使用 更改级别顺序reorder_levels()。也就是说,我不仅想更改它们的顺序,而且还想以不同的方式对它们进行分组,如上面所需的输出所示。
我该怎么做呢?
交换列级别然后排序
df.swaplevel(axis=1).sort_index(axis=1)
Run Code Online (Sandbox Code Playgroud)
reindex用于定制订购level=0
order = ['Male', 'Female']
df.swaplevel(axis=1).reindex(order, axis=1, level=0)
Run Code Online (Sandbox Code Playgroud)
Female Male
Count N Percent Count N Percent
Parents 418.0 1578.0 26.489227 878.0 2545.0 34.499018
Spouse 503.0 1578.0 31.875792 532.0 2545.0 20.903733
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29 次 |
| 最近记录: |