gpt4 book ai didi

python - pandas:重命名多索引 df 中的列标签

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:59 24 4
gpt4 key购买 nike

我有一个看起来像这样的 df:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random((4,4)))
df.columns = pd.MultiIndex.from_product([['1|mm','2|lll'],['A|ljjh','B|ldjdj']])

1|mm 2|lll
A|ljjh B|ldjdj A|ljjh B|ldjdj
0 0.599202 0.093917 0.582809 0.683346
1 0.902717 0.343215 0.222960 0.238709
2 0.808473 0.290253 0.276607 0.775530
3 0.197891 0.505197 0.243890 0.011838

我想像这样分割每个级别的列标签:

columnlabel.split("|")[0]

我不确定执行此操作的最佳方法是什么?我应该创建一个新列表并将其分配给 df.columns 还是可以就地完成?

预期输出

     1                   2          
A B A B
0 0.599202 0.093917 0.582809 0.683346
1 0.902717 0.343215 0.222960 0.238709
2 0.808473 0.290253 0.276607 0.775530
3 0.197891 0.505197 0.243890 0.011838

最佳答案

您可以使用get_level_valuessplit为了进行解析,创建新的元组列表和最后一个新的MultiIndexfrom_tuples :

new_names = list(zip(df.columns.get_level_values(0).str.split('|').str[0],
df.columns.get_level_values(1).str.split('|').str[0]))
print (new_names)
[('1', 'A'), ('1', 'B'), ('2', 'A'), ('2', 'B')]

df.columns = pd.MultiIndex.from_tuples(new_names)
print (df)
1 2
A B A B
0 0.400125 0.007743 0.423123 0.662878
1 0.787079 0.314668 0.798404 0.702267
2 0.451037 0.333846 0.030534 0.823515
3 0.135365 0.785421 0.777839 0.248622

关于python - pandas:重命名多索引 df 中的列标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37304800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com