Pandas将YEARMODA转换为datetime。转换为datetimelike值

2024-04-25 11:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

       YEARMODA  TEMP   MAX   MIN
0      19730701  74.5  90.0  53.6
1      19730702  74.5  88.9  57.9
2      19730703  81.7  95.0  63.0
3      19730704  85.0  95.0  65.8
4      19730705  85.0  97.9  63.9

我怎样才能让约会像时间一样。我想得到一年一个月的平均温度和标准偏差。我知道如何使用组,它只是和YEARMODA一起工作,这就是问题所在


Tags: 数据时间mintempmax约会标准偏差平均温度
1条回答
网友
1楼 · 发布于 2024-04-25 11:38:12

这里有两种方法来解决这个问题,你选吧

df['YEARMODA'] = pd.to_datetime(df['YEARMODA'], format='%Y%m%d')

    YEARMODA  TEMP   MAX   MIN
0 1973-07-01  74.5  90.0  53.6
1 1973-07-02  74.5  88.9  57.9
2 1973-07-03  81.7  95.0  63.0
3 1973-07-04  85.0  95.0  65.8
4 1973-07-05  85.0  97.9  63.9

                                  

from functools import partial

p = partial(pd.to_datetime, format='%Y%m%d')

df['YEARMODA'] = df['YEARMODA'].apply(p)

    YEARMODA  TEMP   MAX   MIN
0 1973-07-01  74.5  90.0  53.6
1 1973-07-02  74.5  88.9  57.9
2 1973-07-03  81.7  95.0  63.0
3 1973-07-04  85.0  95.0  65.8
4 1973-07-05  85.0  97.9  63.9

编辑:您遇到的问题是没有为format表达式提供正确的pd.to_datetime,因此它失败了。你知道吗

编辑2:根据你想怎么做,按月份得到std,你可以这样做。你知道吗

df.groupby(df.YEARMODA.apply(p).dt.strftime('%B')).TEMP.std()


YEARMODA
July    5.321936
Name: TEMP, dtype: float64


df.assign(temp=pd.to_datetime(df['YEARMODA'], format='%Y%m%d') \
  .dt \
  .strftime('%B')) \
  .groupby('temp') \
  .TEMP \
  .std()

temp
July    5.321936
Name: TEMP, dtype: float64

相关问题 更多 >