gpt4 book ai didi

python - 如何按索引值对 Pandas 数据框的列进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:43 24 4
gpt4 key购买 nike

是否有可能根据特定索引的值对 pandas df 的列进行排序?

price / time           load_1 load_2 load_3 load_4
price 50, 68, 23, 12
2018-01-01 00:00:00 12, 65, 37, 8
2018-01-01 00:15:00 13, 54, 112, 6
2018-01-01 00:30:00 58, 12, 96, 4

(第一个指标是能源消耗价格,后面几行代表能源数量,列数不定)

所以它基本上看起来像:

price / time           load_2 load_1 load_3 load_4
price 68, 50, 23, 12
2018-01-01 00:00:00 65, 12, 37, 8
2018-01-01 00:15:00 54, 13, 112, 6
2018-01-01 00:30:00 12, 58, 96, 4

按价格指数按升序或降序对列进行排序。

最佳答案

如果索引名称是 price 则使用 sort_values axis=1:

print (df.columns)
Index(['load_1', 'load_2', 'load_3', 'load_4'], dtype='object')

df = df.sort_values('price', axis=1, ascending=False)
print (df)
load_2 load_1 load_3 load_4
price / time
price 68 50 23 12
2018-01-01 00:00:00 65 12 37 8
2018-01-01 00:15:00 54 13 112 6
2018-01-01 00:30:00 12 58 96 4

如果 MultiIndex 在列中使用 DataFrame.sort_index :

print (df.columns)
MultiIndex(levels=[['load_1', 'load_2', 'load_3', 'load_4'], ['12', '23', '50', '68']],
labels=[[0, 1, 2, 3], [2, 3, 1, 0]],
names=['price / time', 'price'])

df = df.sort_index(axis=1, level=1, ascending=False)
print (df)
price / time load_2 load_1 load_3 load_4
price 68 50 23 12
2018-01-01 00:00:00 65 12 37 8
2018-01-01 00:15:00 54 13 112 6
2018-01-01 00:30:00 12 58 96 4

还有一个问题是必须将第二级转换为整数:

a = df.columns.get_level_values(0)
b = df.columns.get_level_values(1).astype(int)

df.columns = pd.MultiIndex.from_arrays([a,b], names=df.columns.names)

print (df.columns)
MultiIndex(levels=[['load_1', 'load_2', 'load_3', 'load_4'], [12, 23, 50, 68]],
labels=[[0, 1, 2, 3], [2, 3, 1, 0]],
names=['price / time', 'price'])

df = df.sort_index(axis=1, level=1, ascending=False)
print (df)
price / time load_2 load_1 load_3 load_4
price 68 50 23 12
2018-01-01 00:00:00 65 12 37 8
2018-01-01 00:15:00 54 13 112 6
2018-01-01 00:30:00 12 58 96 4

关于python - 如何按索引值对 Pandas 数据框的列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065843/

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