0

我想计算数据框中出现的次数,我需要使用以下函数来计算:

for x in homicides_prec.reset_index().DATE.drop_duplicates():
count= homicides_prec.loc[x]['VICTIM_AGE'].count()
print(count)

但是,这仅适用于重复特定日期的情况。当日期只出现一次时它不起作用,我不明白为什么。我收到此错误:

TypeError: count() takes at least 1 argument (0 given)

也就是说,这对我来说真的没有意义,因为我得到了这个特定值的错误(它只在数据帧上出现一次):

for x in homicides_prec.reset_index().DATE[49:50].drop_duplicates():
count= homicides_prec.loc[x]['VICTIM_AGE'].count()
print(count)

但是,如果我运行这个,我不会收到错误:

homicides_prec.loc[homicides_prec.reset_index().DATE[49:50].drop_duplicates()]['VICTIM_AGE'].count()

为什么会这样???我不能使用第二个选项,因为我需要使用 for 循环。

更多信息,以防万一:问题似乎是,当我运行这个(不计算)时,输出只是一个数字:

for x in homicides_prec.reset_index().DATE[49:50].drop_duplicates(): count= homicides_prec.loc[x]['VICTIM_AGE'] print(count)

输出:33

因此,当我添加 .count 时,它不会接受该输入。我怎样才能解决这个问题?

4

1 回答 1

0

您共享的代码存在一些问题,但最短的答案是 whenx仅在您不执行切片时出现,而是在访问某些值。

如果x == '2019-01-01'和那个值出现两次然后

homicides_prec.loc[x]

将是一个pd.DataFrame有两行的,并且

homicides_prec.loc[x]['VICTIM_AGE']

将是一个pd.Series有两行的对象,它会很高兴地采用一个.count()方法。

但是,如果x == '2019-01-02'那个日期是唯一的,那么

homicides_prec.loc[x]

将是pd.Series索引所在的代表行x

从中我们看到

homicides_prec.loc[x]['VICTIM_AGE']

是一个单一的值,所以.count()没有意义。

于 2019-12-09T03:04:41.023 回答