【发布时间】:2017-08-21 03:45:26
【问题描述】:
我在完成一个 Pandas 的基本练习时遇到了一些麻烦。 下面,给定的数据框:
model serial failure
A 23 0
B 12 1
A 14 1
A 12 0
B 23 1
C 34 1
C 11 1
我需要返回一个包含以下列的新数据框:model、failures_count、failures_ratio。
我的逻辑似乎是错误的,我不明白为什么会这样:
def failure_per_model(self):
models = list(self.data.model.unique())
table = []
for model in models:
model_count = self.data[self.data['model'] == model].shape[0]
failures_count = sum(self.data['failure'][self.data['model'] == model])
failures_ratio = failures_count / model_count
table.append([model, failures_count, failures_ratio])
return pd.DataFrame(table, columns=['model', 'failures_count', 'failures_ratio'])
我实际上可以通过多种方式做到这一点,但有人能解释为什么这里的做法不好吗?
谢谢
【问题讨论】:
-
我认为更好的是使用非常好的实现
groupby和agg功能。但是如果需要一些特殊情况,则必须使用 cusom,因为 pandas 中没有这种特殊功能。 -
非常感谢,我倾向于省略已实现的功能,但我承认它更简洁。
标签: python pandas dataframe conditional-statements