第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Pandas 的更好解決方案

Python Pandas 的更好解決方案

慕村9548890 2023-07-18 15:22:38
所以我有 2 列,我想根據(jù)第二列的值創(chuàng)建第三列。我想從文本和數(shù)字開始,比如 B0292,如果該列的第二個值保持不變,那么新列中的數(shù)字將保持不變。如果數(shù)字發(fā)生變化,那么我的數(shù)字就會增加一。像B0293一樣。d = {'col1': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ], 'col2': ['200', '200', '201', '201', '201', '201', '210', '210', '250', '251']}df = pd.DataFrame(data=d)df桌子:    col1    col20   a   2001   b   2002   c   2013   d   2014   e   2015   f   2016   g   2107   h   2108   i   2509   j   251我想要的結果:col1    col2    New Calculated Column0   a   200 B0292 - 2001   b   200 B0292 - 2002   c   201 B0293 - 2013   d   201 B0293 - 2014   e   201 B0293 - 2015   f   201 B0293 - 2016   g   210 B0294 - 2107   h   210 B0294 - 2108   i   250 B0295 - 2509   j   251 B0296 - 251我已經(jīng)用下面的代碼解決了這個問題,但我想知道是否有更好的 pandas/numpy 解決方案。df['New Calculated Column'] = ''a = 291b = 0for number in df.col2:    if number != df.iloc[b-1,1]:        a += 1        df['New Calculated Column'].iloc[(b)] = 'B0' + str(a) + ' - ' + df.iloc[b,1]    if b < 9:        b += 1
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經(jīng)驗 獲得超6個贊

假設您的字符串有從第二個位置開始的數(shù)字,您可以嘗試series.factorize使用字符串切片和系列添加:


s = "B0292"

s1 = s[0] + pd.Series(int(s[1:]) + df['col2'].factorize()[0],dtype=str)

df['New'] = df['col2'].radd(s1+'-')

print(df)


  ccol1 col2       New

0    a  200  B292-200

1    b  200  B292-200

2    c  201  B293-201

3    d  201  B293-201

4    e  201  B293-201

5    f  201  B293-201

6    g  210  B294-210

7    h  210  B294-210

8    i  250  B295-250

9    j  251  B296-251


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號