pandas - Pandas: Grouped DataFrame - 将列的值除以每个组该列中某一行的值
问题描述
我有一个带有组的数据框。为了标准化每个组的值,我想将每个组的所有值除以该组中某个元素的值。
df = pd.DataFrame([['a','2018-02-03',42],
['a','2018-02-04',22],
['a','2018-02-05',10],
['a','2018-02-06',32],
['b','2018-02-03',10],
['b','2018-02-04',8],
['b','2018-02-05',2],
['b','2018-02-06',12],
['c','2018-02-03',20],
['c','2018-02-04',30],
['c','2018-02-05',5],
['c','2018-02-06',15]])
df.columns = ['product','day','value']
我想通过 'day' == '2018-02-05' 的 'value' 来标准化每个 'product' 的列 'value'
预期结果:
product day value
0 a 2018-02-03 4.2
1 a 2018-02-04 2.2
2 a 2018-02-05 1
3 a 2018-02-06 3.2
5 b 2018-02-03 5
6 b 2018-02-04 4
7 b 2018-02-05 1
8 b 2018-02-06 6
10 c 2018-02-03 4
11 c 2018-02-04 6
12 c 2018-02-05 1
13 c 2018-02-06 3
我试过了df.groupby('product').transform()
。
访问第一个值.transform('first')
是可能的。但是我找不到访问某个值的方法。
注释:也许这个可以不使用解决.groupby()
?
解决方案
这样做:
df = pd.DataFrame([['a','2018-02-03',42],
['a','2018-02-04',22],
['a','2018-02-05',10],
['a','2018-02-06',32],
['b','2018-02-03',10],
['b','2018-02-04',8],
['b','2018-02-05',2],
['b','2018-02-06',12],
['c','2018-02-03',20],
['c','2018-02-04',30],
['c','2018-02-05',5],
['c','2018-02-06',15]])
df.columns = ['product','day','value']
date = '2018-02-05'
# Set the index to ['product', 'day']
df.set_index(['product', 'day'], inplace=True)
# Helper Series - Values of date at index 'day'
s = df.xs(date, level=1)
# Divide df by helper Series and reset index
df = df.div(s, level=0).reset_index()
print(df)
product day value
0 a 2018-02-03 4.2
1 a 2018-02-04 2.2
2 a 2018-02-05 1.0
3 a 2018-02-06 3.2
4 b 2018-02-03 5.0
5 b 2018-02-04 4.0
6 b 2018-02-05 1.0
7 b 2018-02-06 6.0
8 c 2018-02-03 4.0
9 c 2018-02-04 6.0
10 c 2018-02-05 1.0
11 c 2018-02-06 3.0
推荐阅读
- python - 如何检测图像中的一种颜色?
- linux - 被动地将共享对象注入特定的可执行文件
- android-studio - Intel HAXM 无法在 AMD 上运行,我已关闭 Hyper-V
- r - 根据 R 中的许多条件和组对数据进行子集化并对其进行汇总
- reactjs - 如何在没有无限渲染循环的情况下为调用 setter 函数的子项使用带有数组状态的 useState 钩子?
- google-apps-script - 使用 Google Apps 脚本配置 OAuth
- c++ - C++ 文件处理:显示文件中总字节数和对象数的垃圾值
- c++ - 'this' 指针是否参与了虚函数的多态行为
- sql-server - 如何识别 SSIS CSV to SQL 中的问题数据
- python - 多处理的全局变量