我有两列字母和值,新列应该具有基于“字母”列的递增值,如下所示:import pandas as pddf = pd.DataFrame(data=[['a', 'one'], ['a', 'two'], ['b', 'three'], ['b', 'four'], ['c', 'five'], ['c', 'five'], ['c', 'five'] ], columns=['Letter', 'value'])#df['counter'] = df['value'].shift().where(df['Letter'].shift() == df['Letter'], '')print(df)df['counter'] = df.apply(lambda x: x+1 if df['Letter'].shift() == df['Letter'] else 1, axis=1)#print(df)'''Expected output Letter value counter0 a one p11 a two p22 b three p13 b four p24 c five p15 c five p26 c five p3'''你能帮我修复上面的代码吗?谢谢。更准确地编辑我的问题,我需要稍后将行转换为列(我让该代码使用数据透视函数工作)
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
在 pandas 中肯定有一种更优雅的方法可以做到这一点,但我忘记了函数的名称:
# Create a constant, valued-at-one column for summing each row
>>> df['counter'] = df.assign(ind=1).groupby('Letter')['ind'].cumsum()
>>> df
Letter value counter
0 a one 1
1 a two 2
2 b three 1
3 b four 2
4 c five 1
5 c five 2
6 c five 3
添加回答
举报
0/150
提交
取消
