pandas - 无法更改 Pandas Groupby 对象
问题描述
我正在尝试对 Pandas 对象中的组进行重新采样。重采样工作,但不知何故对象没有被修改......我需要创建一个新组或什么?
这是我的代码:
grouped_by_product_comp = competitor_df.sort_values(['history_date']).groupby(['item_id'])
for name, group in grouped_by_product_comp:
my_prod = name
group = group.drop_duplicates(subset = 'history_date')
group.set_index('history_date', inplace = True)
group = group.asfreq('D',method='pad')
print(group.head())
break
my_group = grouped_by_product_comp.get_group(394846296)
print(my_group.head())
这是我的输出:
id item_id competitor_id competitor_price
history_date
2016-01-25 3504 394846296 2301745 1205
2016-01-26 3504 394846296 2301745 1205
2016-01-27 3504 394846296 2301745 1205
2016-01-28 3504 394846296 2301745 1205
2016-01-29 3504 394846296 2301745 1205
id history_date item_id competitor_id competitor_price
187116 3504 2016-01-25 394846296 2301745 1205
188119 17460 2016-02-23 394846296 2301745 1205
188945 28392 2016-03-17 394846296 2301745 1205
189063 29988 2016-03-20 394846296 2301745 1205
189477 35004 2016-03-31 394846296 2301745 1205
所以对象在for循环之外没有改变......我应该以某种方式告诉Groupby对象而不是组来改变吗?非常感谢您阅读本文!
解决方案
您可以使用apply
而不是循环for
并将值分配给新的数据框(或相同的数据框):
new_competitor_df = (competitor_df.sort_values(['history_date']).groupby(['item_id'])
.apply(lambda df_g: (df_g.drop_duplicates(subset = 'history_date')
.set_index('history_date')
.asfreq('D',method='pad')))
.reset_index(0,drop=True))
然后,您可以通过执行以下操作获取所需的所有数据:
print (new_competitor_df[new_competitor_df['item_id'] ==394846296].head())
id item_id competitor_id competitor_price
history_date
2016-01-25 3504 394846296 2301745 1205
2016-01-26 3504 394846296 2301745 1205
2016-01-27 3504 394846296 2301745 1205
2016-01-28 3504 394846296 2301745 1205
2016-01-29 3504 394846296 2301745 1205
或相同的结果print (new_competitor_df.groupby(['item_id']).get_group(394846296).head())
推荐阅读
- kubernetes - 为什么clusterip(iptables)的性能这么差?是不是我的配置有问题
- c# - .net core 3.1 无法删除 cookie
- google-app-engine - 从 Angular 访问受 Google IAP 保护的 API
- string - DBFlow 丢失了 String 类型的数据
- amazon-web-services - 有没有办法使用 AWS 流量镜像功能记录生产服务器流量并在舞台环境中重放相同的流量
- javascript - 使用引导程序 4 选项卡时触发单击不起作用
- kotlin - 如何从具有特定属性的列表中获取“集合集”的计数
- javascript - 删除输入值时不会触发 onChange
- android - 更新 OneSignal 依赖项获取依赖项失败错误
- android - Gson 无法解析日期