为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算数据框列中重复值的频率?

如何计算数据框列中重复值的频率?

白衣非少年 2021-12-09 10:37:20
我在数据框中有一列是UC      WRV001    A, B, C, nan, A, C, DC001    nan, C, D, A, nan, AC002    C, B, B, A, A, AC003    A, C, A, C, B, nan我不确定我做错了什么,但我无法摆脱nans。在此列中,我想要一个不同的列,或一个字典,它可以为我提供 .csv 中不同值的频率计数WR。UC     WR CountV001  {A: 2, B:1, C:2, D:1}C001  {A:2, C:1, D:1}C002  {A:3, B:2, C:1}C003  {A:2, B:1, C:2}或类似的字典。谢谢!:)
查看完整描述

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)


查看完整回答
反对 回复 2021-12-09
?
12345678_0001

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


查看完整回答
反对 回复 2021-12-09
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

要将值作为字典获取,您还可以尝试:

df['WR Count'] = df['WR'].apply(lambda x: dict(Counter(x.split(', ')))


查看完整回答
反对 回复 2021-12-09
  • 3 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信