请教一个df.apply问题

请教一个问题,您在pandas中关于apply、lambda的应用这一文章中,用到了平行的三个数据,如果要用到二个平行数据,一个是下一行数据,如平均气温,平均湿度,和下一行的风速,该如何写代码?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:DataFrame 根据同一行多列的值做判断,生成新的列值,df.apply,lambda的使用 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: pandas计算行或者列的总和及apply函数的使用中的 类似的,计算每一行的平均值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对于重新构建的dataframe

    df=pd.DataFrame(d)
    df['row_mean']=df.apply(lambda x:x.mean(),axis=1)
    print(df)
       one  two  three  row_mean
    a    1    5      9       5.0
    b    2    6     10       6.0
    c    3    7     11       7.0
    d    4    8     12       8.0
    
  • 以下回答来自chatgpt:

    针对您的问题,可以按照以下步骤编写代码:

    1. 读取气象数据的CSV文件到pandas的DataFrame,例如以下代码读取北京2018年每一天的平均气温和湿度数据:
    df_weather = pd.read_csv('path/to/weather.csv')
    # 只选择需要的列,例如日期、月份、平均气温和平均湿度
    df_weather = df_weather[['日期', '月份', '平均气温', '平均湿度']]
    
    1. 计算每个月份的平均气温和平均湿度,例如以下代码实现此功能:
    avg_weather = df_weather.groupby('月份').agg({'平均气温': 'mean', '平均湿度': 'mean'})
    
    1. 读取下一个时期的风速数据到pandas的DataFrame,并进行处理,例如以下代码读取从2018年1月1日到2018年6月30日的风速数据,将日期和月份提取出来,然后计算每个月份的平均风速:
    df_wind = pd.read_csv('path/to/wind.csv')
    # 只选择需要的列,例如日期和平均风速
    df_wind = df_wind[['日期', '平均风速']]
    # 将日期提取出来
    df_wind['日期'] = pd.to_datetime(df_wind['日期'], format='%Y-%m-%d') 
    df_wind['月份'] = df_wind['日期'].dt.strftime('%Y-%m')
    # 计算每个月份的平均风速
    avg_wind = df_wind.groupby('月份').agg({'平均风速': 'mean'})
    
    1. 将之前计算的气温和湿度数据和风速数据合并在一起,例如以下代码将气温和湿度数据与风速数据按照月份进行合并:
    result = pd.concat([avg_weather, avg_wind], axis=1, sort=True)
    

    以上就是处理该问题的代码和步骤,如果您有任何疑问或者需要更具体的代码,请告诉我。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你为啥非要一起弄,先把风速做一个偏移,再按照同一行处理他不香吗