如何按升序对pandas dataframe进行排序

kgsdhlau  于 2023-05-21  发布在  其他
关注(0)|答案(2)|浏览(257)

我有一个这样的dataframe:

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的 Dataframe 。当我这样做:

df = df.sort_values(by='Date')

但是,即使添加升序= True或False也不会发生任何事情。
你能给予订购上述数据框的方法吗?
如果可能的话,你能给予2个可能性,如按索引和日期排序,但我期待着直接按升序排序的日期,而不触及索引。

编辑以更清晰:

# 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)

上面有我的代码。我无法使排序方法正确工作。

rqqzpn5f

rqqzpn5f1#

问题是如果在循环中修改值,如果原始列表没有变化,您可以将输出分配给原始的DataFrames列表,如:

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)
ogsagwnx

ogsagwnx2#

sort_values()默认情况下按升序对数据进行排序。您对.sort_values(by='Date', ascending=False)感兴趣:

import pandas as pd

df = pd.DataFrame(range(10), columns=['Price'])

df['Date'] = [pd.to_datetime(f"2021-02-{str(x).zfill(2)}") for x in range(1, 11)]

df.sort_values(by=['Date'], ascending=False)

相关问题