gpt4 book ai didi

pandas - 从字典和索引顺序创建 DataFrame?

转载 作者:行者123 更新时间:2023-12-05 03:01:53 30 4
gpt4 key购买 nike

我正在使用最近下载的 Anaconda 和 Python 3.7.1 & pandas 0.23.4

pandas doc说:

When the data is a dict, and an index is not passed, the Series index will be ordered by the dict’s insertion order

我从没有传递索引的字典中实例化一个 pandas DataFrame:

newspapers = {'Jim':{'Mon':15,'Tue':17,'Wed':21,'Thu':16,'Fri':19},\
'Tony':{'Mon':8,'Tue':15,'Wed':11,'Thu':16,'Fri':13}, \
'Colin':{'Mon':13,'Tue':17,'Wed':19,'Thu':17,'Fri':20} \
}
newspapers_df = pd.DataFrame(newspapers)

为什么这不按插入顺序显示,星期一、星期二、星期三、星期四、星期五?:

print(newspapers_df)

输出:

      Jim  Tony  Colin
Fri 19 13 20
Mon 15 8 13
Thu 16 16 17
Tue 17 15 17
Wed 21 11 19

最佳答案

这似乎是错误,对于我在 python 3.5 中工作,pandas 0.24.2 在字典理解中创建 Series 并传递给 DataFrame 构造函数:

newspapers_df = pd.DataFrame({k:pd.Series(v) for k, v in newspapers.items()})

print (newspapers_df)
Jim Tony Colin
Mon 15 8 13
Tue 17 15 17
Wed 21 11 19
Thu 16 16 17
Fri 19 13 20

您的数据的可能解决方案 - DataFrame.reindex排序的 CategoricalIndex:

newspapers_df = pd.DataFrame(newspapers)

L = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
newspapers_df = newspapers_df.reindex(L)

或者:

newspapers_df.index = pd.CategoricalIndex(newspapers_df.index, ordered=True, categories=L)
newspapers_df = newspapers_df.sort_index()
print (newspapers_df)
Jim Tony Colin
Mon 15 8 13
Tue 17 15 17
Wed 21 11 19
Thu 16 16 17
Fri 19 13 20

关于pandas - 从字典和索引顺序创建 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55397178/

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