所以我有 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
添加回答
舉報
0/150
提交
取消