将年月转换为 Date 而 GroupBy
Convert year-month into Date while GroupBy
我在 Dataframe 中有一个 PERIOD 列,格式为:
PERIOD ACTUAL
202201 343.34
202202 545.33
202203 54
202201 989.2
表示DMY格式01-01-2022, 01-02-2022, 01-03-2022
我在里面用:
groupedResult = df.groupby('PERIOD')['Actual'].sum()
如何将 PERIOD 值转换为 Python 中的日期?
我尝试继续,但卡住了:
groupedResult = df.groupby(datetime('PERIOD'.year, 'PERIOD'.month, 1))['Actual'].sum()
你的问题不是很清楚,因为没有一个可行的例子,但我在这里用我编造的数据为你解决了这个问题:
import pandas as pd
data = {'period':['202201','202201','202201','202201','202202','202202','202203'], 'actuals':[10,20,30,40,50,60,70]}
df = pd.DataFrame(data)
print("BEFORE:")
这给出了您描述的时间段,但它存储为对象而不是日期时间:
BEFORE:
period actuals
0 202201 10
1 202201 20
2 202201 30
3 202201 40
4 202202 50
5 202202 60
6 202203 70
print(df)
此处format='%Y%m'
将其转换为日期时间(%Y%m 表示在传入字符串中搜索 YYYYMM)。然后 .dt.strftime('%Y/%m')
将其转换回对象格式类型,但采用您需要的日期格式。
df['period'] = pd.to_datetime(df['period'], format='%Y%m').dt.strftime('%Y/%m')
print("AFTER:")
groupedresults = df.groupby('period')['actuals'].sum()
print(groupedresults)
这是你的输出。更改期间的日期格式以满足您的需要:
AFTER:
period
2022/01 100
2022/02 110
2022/03 70
Name: actuals, dtype: int64
我在 Dataframe 中有一个 PERIOD 列,格式为:
PERIOD ACTUAL
202201 343.34
202202 545.33
202203 54
202201 989.2
表示DMY格式01-01-2022, 01-02-2022, 01-03-2022
我在里面用:
groupedResult = df.groupby('PERIOD')['Actual'].sum()
如何将 PERIOD 值转换为 Python 中的日期?
我尝试继续,但卡住了:
groupedResult = df.groupby(datetime('PERIOD'.year, 'PERIOD'.month, 1))['Actual'].sum()
你的问题不是很清楚,因为没有一个可行的例子,但我在这里用我编造的数据为你解决了这个问题:
import pandas as pd
data = {'period':['202201','202201','202201','202201','202202','202202','202203'], 'actuals':[10,20,30,40,50,60,70]}
df = pd.DataFrame(data)
print("BEFORE:")
这给出了您描述的时间段,但它存储为对象而不是日期时间:
BEFORE:
period actuals
0 202201 10
1 202201 20
2 202201 30
3 202201 40
4 202202 50
5 202202 60
6 202203 70
print(df)
此处format='%Y%m'
将其转换为日期时间(%Y%m 表示在传入字符串中搜索 YYYYMM)。然后 .dt.strftime('%Y/%m')
将其转换回对象格式类型,但采用您需要的日期格式。
df['period'] = pd.to_datetime(df['period'], format='%Y%m').dt.strftime('%Y/%m')
print("AFTER:")
groupedresults = df.groupby('period')['actuals'].sum()
print(groupedresults)
这是你的输出。更改期间的日期格式以满足您的需要:
AFTER:
period
2022/01 100
2022/02 110
2022/03 70
Name: actuals, dtype: int64