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(', ')))
添加回答
举报