python - 如何使用Python按升序对熊猫数据框进行排序
问题描述
我有一个这样的数据框:
Date Price
0 2021-02-12 00:00:00 50
1 2021-02-11 00:00:00 2
2 2021-02-10 00:00:00 40.4
3 2021-02-09 00:00:00 775.6
4 2021-02-08 00:00:00 1000.2
5 2021-02-07 00:00:00 500
print(df.dtypes) 的列类型:
Date datetime64[ns]
Price float64
预期输出:
Date Price
0 2021-02-07 00:00:00 500
1 2021-02-08 00:00:00 1000.2
2 2021-02-09 00:00:00 775.6
3 2021-02-10 00:00:00 40.4
4 2021-02-11 00:00:00 2
5 2021-02-12 00:00:00 50
我有一个像df这样的数据框。当我做 :
df = df.sort_values(by='Date')
但即使添加升序 = True 或 False,也不会发生任何事情。
您能否按上述方式订购此数据框?
如果可能的话,您能否提供两种可能性,例如按索引和日期排序,但我希望直接按升序日期排序,而不涉及索引。
编辑更清楚:
# Converted list of dictionaries to a Dataframe
extracted_data_List_DataFrames = [pd.DataFrame(x) for x in extracted_data_List]
# Convert string to their respectiv types
for dfs in extracted_data_List_DataFrames:
dfs['Date'] = pd.to_datetime(dfs['Date'])
dfs['Price'] = dfs['Price'].astype('float64')
# Sort dataframes by 'Date'
dfs = dfs.sort_values(['Date'], ascending=False)
print(extracted_data_List_DataFrames)
你上面有我的代码。我无法使排序方法正常工作。
解决方案
问题是如果在循环中修改值,如果原始列表没有变化,您可以将输出分配给 DataFrame 的原始列表,例如:
for i, dfs in enumerate(extracted_data_List_DataFrames):
dfs['Date'] = pd.to_datetime(dfs['Date'])
dfs['Price'] = dfs['Price'].astype('float64')
# Sort dataframes by 'Date'
dfs = dfs.sort_values(['Date'], ascending=False)
extracted_data_List_DataFrames[i] = dfs
另一个想法是使用inplace=True
:
for dfs in extracted_data_List_DataFrames:
dfs['Date'] = pd.to_datetime(dfs['Date'])
dfs['Price'] = dfs['Price'].astype('float64')
# Sort dataframes by 'Date'
dfs.sort_values(['Date'], ascending=False, inplace=True)
推荐阅读
- java - 覆盖显示的文件后刷新JavaFX imageview?
- python - NLTK 语言建模混乱
- asp.net - Asp.net 生成卡片而不是使用 GridView 动态地这样做
- python - 尝试使用执行 ID 检索对象时出现 AWS Athena python 连接 S3 错误
- javascript - 在Javascript中,如果函数是对象数据类型(派生),那么它如何用作对象构造函数?
- javascript - 播放视频时无缝更改视频分辨率
- python - 如何在基于类的视图 django 中限制未经身份验证的用户的帖子视图
- javascript - openJSCAD 包含文件
- javascript - 使用 jquery 导入另一个 html 文件后下拉列表不起作用?
- sql - 在 SQL Server 中仅获取月份和年份