为了账号安全,请及时绑定邮箱和手机立即绑定

python lambda根据现有列增加值

python lambda根据现有列增加值

跃然一笑 2022-06-02 16:45:06
我有两列字母和值,新列应该具有基于“字母”列的递增值,如下所示: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


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号