pandas - 我成功地从数据框中的列返回计数,但是在尝试将结果导入列时得到 NaN 值
问题描述
我是 ArcGIS API for Python 的新手,我正在尝试使用 ArcGIS Pro 10.5 中的 Notebook 创建一个工具,该工具将重新设计一个表(csv 文件)。数据框的标题为data_df我需要计算每个国家/地区在特定年龄组(1 岁以下、1-2 岁、3-4 岁、5-12 岁、13-17 岁、18 岁及以上)中发生的年龄数量)。我的数据样本设置如下:
国家年龄性别
美国 3 M
美国 5 F
美国 10 MF
加拿大 0 M
加拿大 1 M
加拿大 9 F
墨西哥 13 M
墨西哥 18 F
我创建了一个 python 片段,它将为我提供我正在寻找的计数和总和。这个例子给了我 1-2yrs 组的计数,它有效!
data_df.loc[(data_df['Age'] >=1) & (data_df['Age'] <=2)].groupby('Country')['Age'].count()
问题是我正在尝试创建新列,这些列将为我提供每个国家/地区的总数。我知道有重复,我可以稍后删除它们。我试过下面的代码:
data_df['Hague1_2'] = data_df.loc[(data_df['Age'] >=1) & (data_df['Age'] <=2)].groupby('Country')['Age'].count()
结果应如下所示,但我得到的是 NaN 值:
国家 年龄 性别 Under1 Yr1-2 Yr3-4 Yr5-12 Yr13-17 Yr18Older
美国 3 M 0 0 1 2 0 0
美国 5 F 0 0 1 2 0 0
美国 10 MF 0 0 1 2 0 0
加拿大 0 M 1 1 0 1 0 0
加拿大 1 M 0 M 1 1 0 1 0 0
加拿大 9 F 0 M 1 1 0 1 0 0
墨西哥 13 M 0 0 0 0 1 1
墨西哥 18 F 0 0 0 0 1 1
任何帮助是极大的赞赏!
解决方案
考虑创建一个字典,您可以使用它来重新映射您的值。然后使用 one-hot 编码。
import pandas as pd
df = pd.DataFrame([ ['USA', 3, 'M'], ['USA', 5, 'F'], ['USA', 10, 'F'],
['Canada', 0, 'M'],['Canada', 1, 'M'], ['Canada', 9, 'F'],
['Mexico', 13, 'M'],['Mexico', 18, 'F']], columns = ['Country', 'Age', 'Gender'])
remap_dct = { 0: "Under 1",
1: "1-2yrs",
2: "1-2yrs",
3: "3-4yrs",
4: "3-4yrs",
5: "5-12yrs",
6: "5-12yrs",
7: "5-12yrs",
8: "5-12yrs",
9: "5-12yrs",
10: "5-12yrs",
11: "5-12yrs",
12: "5-12yrs",
13: "13-17yrs",
14: "13-17yrs",
15: "13-17yrs",
16: "13-17yrs",
17: "13-17yrs"}
df['AgeGroup'] = df['Age'].map(remap_dct)
df.loc[df['Age'] >= 18, 'AgeGroup'] = "18 & older"
df = df.join(pd.get_dummies(df['AgeGroup']))
df = df.drop('AgeGroup', axis=1)
print(df)
Country Age Gender 1-2yrs 13-17yrs 18 & older 3-4yrs 5-12yrs Under 1
0 USA 3 M 0 0 0 1 0 0
1 USA 5 F 0 0 0 0 1 0
2 USA 10 F 0 0 0 0 1 0
3 Canada 0 M 0 0 0 0 0 1
4 Canada 1 M 1 0 0 0 0 0
5 Canada 9 F 0 0 0 0 1 0
6 Mexico 13 M 0 1 0 0 0 0
7 Mexico 18 F 0 0 1 0 0 0
推荐阅读
- java - 如何将多个参数从 thymeleaf html 传递到 thymeleaf 方言处理器
- excel - 根据活动单元格选择一系列单元格
- c++ - c ++如何将函数参数转换为字符串
- java - VaadinFlow 中的样式网格
- html - 将标题添加到现有 PDF(模板)
- css - 页脚由两个直角三角形组成
- gnuplot - 用 gnuplot 拟合抛物线是错误的
- c# - 使用 XmlMediaTypeFormatter 或其他反序列化的 ReadAsAsync 类
- node.js - 对 Google V2 webhook 外部 API 访问的操作
- codenameone - 代号中设备上的下拉错误