如何使用 Pandas 每半小时将其他列包含在数据框中以每天重新采样?
How do I include other columns in dataframe half hourly to daily resample using Pandas?
我有一个以半小时为间隔格式化的天气数据框(在下面简化):
df = pd.DataFrame({ 'date': ['2019-01-01 09:30:00', '2019-01-01 10:00', '2019-01-02 04:30:00','2019-01-02 05:00:00','2019-01-04 02:00:00'],
'temp': [15.2,18.0,4.5,4.5,6.5],
'windSpeedMax': [20,90,35,45,15],
'windSpeedMax_Dir':['NE','SE','SW','W','S']})
我的目标是每天获取最大风和风的方向。使用 pandas:
df['date'] = pd.to_datetime(df['date'])
df = df[~df['windSpeedHigh'].isin(['--'])]
df['windSpeedHigh'] = pd.to_numeric(df['windSpeedHigh'])
df_daily = df.resample('D', on='date').agg({'windSpeedHigh': max})
我的结果是:
windSpeedHigh
date
2019-01-01 90.0
2019-01-02 45.0
2019-01-03 NaN
2019-01-04 15.0
只求每天的最大风速
我的预期结果还需要包括最大风的方向:
windSpeedHigh windSpeedHigh
date
2019-01-01 90.0 SE
2019-01-02 45.0 W
2019-01-03 NaN NaN
2019-01-04 15.0 S
你可以做到 groupby().idxmax()
:
idx = df.groupby(df['date'].dt.normalize())['windSpeedHigh'].idxmax()
df.loc[idx]
我有一个以半小时为间隔格式化的天气数据框(在下面简化):
df = pd.DataFrame({ 'date': ['2019-01-01 09:30:00', '2019-01-01 10:00', '2019-01-02 04:30:00','2019-01-02 05:00:00','2019-01-04 02:00:00'],
'temp': [15.2,18.0,4.5,4.5,6.5],
'windSpeedMax': [20,90,35,45,15],
'windSpeedMax_Dir':['NE','SE','SW','W','S']})
我的目标是每天获取最大风和风的方向。使用 pandas:
df['date'] = pd.to_datetime(df['date'])
df = df[~df['windSpeedHigh'].isin(['--'])]
df['windSpeedHigh'] = pd.to_numeric(df['windSpeedHigh'])
df_daily = df.resample('D', on='date').agg({'windSpeedHigh': max})
我的结果是:
windSpeedHigh
date
2019-01-01 90.0
2019-01-02 45.0
2019-01-03 NaN
2019-01-04 15.0
只求每天的最大风速
我的预期结果还需要包括最大风的方向:
windSpeedHigh windSpeedHigh
date
2019-01-01 90.0 SE
2019-01-02 45.0 W
2019-01-03 NaN NaN
2019-01-04 15.0 S
你可以做到 groupby().idxmax()
:
idx = df.groupby(df['date'].dt.normalize())['windSpeedHigh'].idxmax()
df.loc[idx]