3 回答

TA貢獻1851條經驗 獲得超5個贊
首先忽略nan條目,我的方法是:
df['WR Count'] = df.WR.str.replace(' ', '').str.split(',').apply(Counter)
# WR WR Count
# UC
# V001 A, B, C, nan, A, C, D {'A': 2, 'B': 1, 'C': 2, 'nan': 1, 'D': 1}
# C001 nan, C, D, A, nan, A {'nan': 2, 'C': 1, 'D': 1, 'A': 2}
# C002 C, B, B, A, A, A {'C': 1, 'B': 2, 'A': 3}
# C003 A, C, A, C, B, nan {'A': 2, 'C': 2, 'B': 1, 'nan': 1}
請注意,如果您確定分隔符始終為 ', ',那么您可以對其進行硬編碼,這會導致命令更短:
df['WR Count'] = df.WR.str.split(', ').apply(Counter)

TA貢獻1802條經驗 獲得超5個贊
只是不要將dict放入單元格中pandas,這將使許多內置pandas的好功能不再起作用
df.set_index('UC').WR.\
str.split(', ',expand=True).\
stack().str.get_dummies().sum(level=0).drop('nan',1)
A B C D
UC
V001 2 1 2 1
C001 2 0 1 1
C002 3 2 1 0
C003 2 1 2 0

TA貢獻1834條經驗 獲得超8個贊
要將值作為字典獲取,您還可以嘗試:
df['WR Count'] = df['WR'].apply(lambda x: dict(Counter(x.split(', ')))
添加回答
舉報