python - 试图以某种复杂的方式用 Pandas 总结行
问题描述
我有数据框:
df = np.DataFrame = {'Year' : [2010, 2011, 2012, 2013, 1922, 1923, 1924, 1925],
'ID' : ['A', 'A', 'A', 'A', 'B', 'B', 'B'],
'Data1' : [1, 2, 3, 4, 2, 3, 4],
'Data2' : [2, 2, 2, 2, 3, 3, 3]}
df
Year ID Data1 Data2
2010 A 1 2
2011 A 2 2
2012 A 3 2
2013 A 4 2
1922 B 2 3
1923 B 3 3
1924 B 4 3
我想总结每个 ID 的总 Data1 和 Data2 ,以便每年给出该年所有 Data1 或 Data2 的总和。
最终,我希望我的 DataFrame 看起来像这样:
df
Year ID Data1 Data2
2010 A 1 2
2011 A 3 4
2012 A 6 6
2013 A 10 8
1922 B 2 3
1923 B 5 6
1924 B 9 9
我有超过 100k 行,所以如果可能的话,这需要在没有迭代的情况下完成。
解决方案
使用assign
和groupby
df = df.assign(**df.groupby('ID')['Data1', "Data2"].cumsum())
print(df)
Year ID Data1 Data2
0 2010 A 1 2
1 2011 A 3 4
2 2012 A 6 6
3 2013 A 10 8
4 1922 B 2 3
5 1923 B 5 6
6 1924 B 9 9
推荐阅读
- c++ - 将带有 unique_ptr 的可变 lambda 传递给 const& std::function
- sql - 我可以将此光标和 while 循环转换为基于集合的解决方案吗?
- javascript - 全局变量没有作为参数传递给我的函数
- ios - 如何访问现有的数据库文件
- angular - 具有分组列的 PrimeNG 表不会排序
- python - 为什么我的 Django settings.py 中的 LOGGING 被忽略了?
- java - 如何跟踪在 Ubuntu 中运行的程序/进程?
- c# - 如何以更清洁的方式处理此异常?
- bash - 获取文件中字号 X 的行数
- pdf - 使用 MuPDF 加密 PDF