我有一个DataFrame
,其中的行表示交通事故。其中两列是Weather
和Skidding
:
import pandas as pd
df = pd.DataFrame({'Weather': ['rain', 'fine', 'rain', 'fine', 'snow', 'fine', 'snow'],
'Skidding': ['skid', 'skid', 'no skid', 'no skid', 'skid', 'no skid', 'jackknife']})
我想计算一下下雨或下雪时发生打滑或弯折的可能性有多大。到目前为止,我已经提出了一个使用布尔索引和四个辅助数据帧的解决方案:
^{pr2}$对于本例,它的计算结果是relative_probability
的3.0
。不过,这似乎没有必要冗长,我想重构它。在
我试过的一个方法是
counts = df.groupby('Weather')['Skidding'].value_counts()
relative_probability = (counts['rain']['skid'] + counts['snow']['skid']
+ counts['rain']['jackknife'] + counts['snow']['jackknife']) / (counts['fine']['skid'] + counts['fine']['jackknife'])
但是,这会导致KeyError
,因为jackknife
并不是在每种天气情况下都会出现,而且无论如何,写出所有的术语也是冗长的。实现这一目标的更好方法是什么?在
您可以使用}:
isin
代替... in ... for ...
理解;如果只需要末尾的数字,也不需要过滤数据帧,只需构建条件sum
和{相关问题 更多 >
编程相关推荐