python - 为什么 groupby 方法给出 NA 值?
问题描述
Python 3.9.6,熊猫 1.2.4
我想找到每个日期医院收治的患者人数。我写了这段代码:
import pandas as pd
data_admission = data[['name_of_hospital', 'date_admission']].copy(deep=True)
data_admission = data_admission.dropna()
data_admission = data_admission.sort_values(by=['date_admission'])
data_admission['quantity_admission'] = 1
grouped = data_admission['quantity_admission'].groupby(data_admission['name_of_hospital'])
data_admission['quantity_admission'] = grouped.cumsum()
grouped = data_admission['quantity_admission'].groupby([data_admission['name_of_hospital'], data_admission['date_admission']])
result = grouped.max()
在结果变量的字段quantity_admission中,我得到了 NAN- 值,尽管没有一列有空值。为什么?
简单的例子(效果很好):
hosp1 = 'Name_1'
hosp2 = 'Name_2'
date1 = np.datetime64('2020-04-02', 'D')
date2 = np.datetime64('2020-04-01', 'D')
date3 = np.datetime64('2020-04-04', 'D')
date4 = np.datetime64('2020-04-03', 'D')
data_hosp = []
data_date = []
for date in [date2, date2, date3, date4]:
data_hosp.append(hosp1)
data_date.append(date)
data_hosp.append(hosp2)
if date==date2:
data_date.append(date1)
else:
data_date.append(date3)
df = pd.DataFrame({'hospital':data_hosp, 'date':data_date})
df = df.sort_values(by=['date'])
df['count'] = 1
grouped = df['count'].groupby(df['hospital'])
df['count'] = grouped.cumsum()
grouped = df['count'].groupby([df['hospital'], df['date']])
df = grouped.max()
更新:我发现 NAN 值是在那些不在原始数据中的name_of_hospital和date_admission列集中获得的。尚不清楚为什么 pandas 将这些不存在的组合与 NAN- 值相加。
解决方案
推荐阅读
- json - Ubuntu:加载共享库时出错:libqjsonrpc.so.1
- javascript - html 文件中的表单数据未链接到 .js 文件
- mysql - MySQL LEFT JOIN 仅 1 行取决于 MAX() 值
- python - 使用和不使用换行符的 Python 打印
- sql - SQL Server - 选择查询 - 内部联接 - 错误消息:无法解决排序规则冲突
- angular - 如何从服务器端构建与 Angular 路由对应的路由?
- database - 在eclipse中运行jbmp示例时出现问题
- javascript - 如何将 json 数组从 html 文件的脚本部分传递到 javascript 索引?
- python - 根据python中的依赖费用计算销售价格
- h2o - 对枚举/分类类型列求和时,h2o 数据框 GroupBy 和函数在做什么?