如何使用Pandas groupby在组中添加顺序计数器列我觉得有比这更好的方法:import pandas as pddf = pd.DataFrame( [['A', 'X', 3], ['A', 'X', 5], ['A', 'Y', 7], ['A', 'Y', 1], ['B', 'X', 3], ['B', 'X', 1], ['B', 'X', 3], ['B', 'Y', 1], ['C', 'X', 7], ['C', 'Y', 4], ['C', 'Y', 1], ['C', 'Y', 6]], columns=['c1', 'c2', 'v1'])def callback(x): x['seq'] = range(1, x.shape[0] + 1) return xdf = df.groupby(['c1', 'c2']).apply(callback)print df为此目的: c1 c2 v1 seq0 A X 3 11 A X 5 22 A Y 7 13 A Y 1 24 B X 3 15 B X 1 26 B X 3 37 B Y 1 18 C X 7 19 C Y 4 110 C Y 1 211 C Y 6 3有什么方法可以避免回调吗?
2 回答
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
慕田峪7331174
TA贡献1828条经验 获得超13个赞
完整的工作代码
import pandas as pd
df = pd.DataFrame(
[['A', 'X', 3], ['A', 'X', 5], ['A', 'Y', 7], ['A', 'Y', 1],
['B', 'X', 3], ['B', 'X', 1], ['B', 'X', 3], ['B', 'Y', 1],
['C', 'X', 7], ['C', 'Y', 4], ['C', 'Y', 1], ['C', 'Y', 6]],
columns=['c1', 'c2', 'v1'])
df['seq'] = df.groupby(['c1', 'c2']).cumcount() + 1
print(df)
输出量
c1 c2 v1 seq
0 A X 3 1
1 A X 5 2
2 A Y 7 1
3 A Y 1 2
4 B X 3 1
5 B X 1 2
6 B X 3 3
7 B Y 1 1
8 C X 7 1
9 C Y 4 1
10 C Y 1 2
11 C Y 6 3
添加回答
举报
0/150
提交
取消