【发布时间】:2018-06-05 11:37:42
【问题描述】:
我有一个包含多个字段的 DF。例如:
Year_end Week_end Integrado Probs Duration_hours Router_name
1225 2017 2 si 1 0.7 C3617_AI670_SARA
1562 2017 2 si N/A 23.0 CF641_PTC70_SARA
1722 2017 2 si 1 314.1 CH126_R1970_SARA
1731 2017 2 si 1 265.9 CH205_BRR70_SARA
1760 2017 2 si 512 1.5 CO068_ARI70_SARA
1936 2017 2 si 32 23.4 CO721_LE370_SARA
2011 2017 2 si N/A 0.5 CR015_EMP70_SARA
2335 2017 2 si 1 340.3 RJ046_LR170_SARM
2337 2017 2 si N/A 2.5 RJ077_LR370_SARM
2342 2017 2 si N/A 2.0 RJ092_RJA70_SARA
2346 2017 2 si 1 338.3 RJ204_LR670_SARM
2350 2017 2 si N/A 2.7 RJ210_RJC70_SARA
我在做 groupby 比如:
fieldsX = ['Year_end','Week_end']
f = { 'Router_name':['count'], 'Probs':['count'], 'Duration_hours':['mean'] }
a = a.groupby(fieldsX).agg(f)
这工作正常。唯一的问题是字段Probs 既有数字又有特定的字符串N/A。我只想计算所有数字但不N/A 出现。
所以,count(Router_name) = 12 但count(Probs) **should** be 7。取而代之的是我的count(Probs) = 12。
我该怎么做?
谢谢!
【问题讨论】:
-
尝试用 np.nan 替换 'N/A'。或者他们已经是了。
-
将
f更改为f = { 'Router_name':['count'], 'Probs':[lambda x: x.replace('N/A', np.nan).count()], 'Duration_hours':['mean'] }。 -
我会做类似的事情:
df.Probs = pd.to_numeric(df.Probs, errors='coerce')从 Probs 列中的 N/A 值中“清理”数据。 -
谢谢各位。两个答案都解决了我的问题!谢谢!
-
虽然我的工作正常,但我强烈建议使用@AntonvBR 提供的内容。它更简洁,很明显
Probs是一个数字列。
标签: python-3.x pandas count pandas-groupby