colA 是我目前擁有的。
但是,我正在嘗試生成colB.
我想colB包含001每個值的數字。但是,如果相關colA值在該列中存在兩次,我希望colB數字為002,依此類推。
希望下面的示例能夠根據colA值更好地了解我正在尋找的內容。我一直在努力為此撰寫任何真正的代碼。
編輯:努力用文字解釋這一點,所以如果你能想到更好的解釋方式,請隨時更新我的??問題。
colA colB
BJ02 001
BJ02 002
CJ02 001
CJ03 001
CJ02 002
DJ01 001
DJ02 001
DJ07 001
DJ07 002
DJ07 003
uj5u.com熱心網友回復:
您可以使用 Counter() 來計算 colA 中每個值的頻率,然后創建一個函式來生成 colB 的值串列。
from collections import Counter
def count_value(colA):
new_col = []
colA = df[colA].tolist()
freq_table = Counter(colA) # count the frequency of each value
for value in colA:
new_col.append('00' str(freq_table[value]))
return new_col
df['colB'] = count_value(df['colA'])
uj5u.com熱心網友回復:
使用groupby_cumcount:
df['colB'] = df.groupby('colA').cumcount().add(1)
print(df)
# Output
colA colB
0 BJ02 1
1 BJ02 2
2 CJ02 1
3 CJ03 1
4 CJ02 2
5 DJ01 1
6 DJ02 1
7 DJ07 1
8 DJ07 2
9 DJ07 3
由@HenryEcker 建議,使用zfill:
df['colB'] = df.groupby('colA').cumcount().add(1).astype(str).str.zfill(3)
print(df)
# Output:
colA colB
0 BJ02 001
1 BJ02 002
2 CJ02 001
3 CJ03 001
4 CJ02 002
5 DJ01 001
6 DJ02 001
7 DJ07 001
8 DJ07 002
9 DJ07 003
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325896.html
上一篇:如何按長度對資料幀字典進行排序
下一篇:從多級索引資料框中有選擇地洗掉列
