如何在pandas中将函数应用于pivot表的每一列?

2024-04-20 12:37:08 发布

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

代码:

df = pd.read_csv("example.csv", parse_dates=['ds'])
df2 = df.set_index(['ds', 'city']).unstack('city')
rm = pd.rolling_mean(df2, 3)
sd = pd.rolling_std(df2,3)

df2输出:

enter image description here

我想要的:我想知道是否每个城市,每个日期,如果数字大于1标准差,从该城市的平均预订。对于ex伪码:

^{pr2}$

问题是:我很难找出如何从每个数据帧访问我需要的数据。括号中的伪代码部分是我需要帮助弄清楚的。在

我尝试了:

df2[“城市”] 列表(df2)

他们都给我错误。在

df2[1:2]

拼接是可行的,但我觉得这不是访问它的最佳方式。在


Tags: csv数据代码citydfreadindexparse
1条回答
网友
1楼 · 发布于 2024-04-20 12:37:08

您应该使用dataframeapi的apply函数。演示如下:

import pandas as pd
df = pd.DataFrame({'A': [1,2,3,4,5]; 'B': [1,2,3,4,5]})
df['C'] = df.apply(lambda row: row['A']*row['B'], axis=1)

输出:

^{pr2}$

更具体地说,你的情况是:

  1. 你必须预先计算:“同一日期和城市滚动平均数”,“同一日期和城市标准差”。您可以使用^{}函数,它允许按城市日期汇总数据,然后计算标准偏差和平均值。

  2. 把std-dev和mean放在你的表中,使用字典:some_dict = {('city', 'date'):[std_dev, mean], ..}。要将数据放入数据帧,请使用apply函数。

  3. 您有运行check byapply函数所需的所有数据。

相关问题 更多 >