首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在成功地从dataframe中的列返回一个计数,但是当试图将结果导入列时,我获得了NaN值。

我正在成功地从dataframe中的列返回一个计数,但是当试图将结果导入列时,我获得了NaN值。
EN

Stack Overflow用户
提问于 2020-05-06 17:30:50
回答 1查看 35关注 0票数 0

我是ArcGIS的新手,我正在尝试使用ArcGIS Pro10.5中的Notebook创建一个工具,该工具将重新设计一个表(csv )。该数据名为“data_df I”,用于统计每个国家在特定年龄组( 1、1-2岁、3-4岁、5-12岁、13-17岁、18岁及以上)的年龄。我的数据示例设置如下:

农村年龄性别

美国3 M

美国5 F

美国10 M、F

加拿大0

加拿大1毛

加拿大9 F

墨西哥13毛

墨西哥18 F

我创建了一个python片段,它将给我我正在寻找的计数和和。这个例子给出了1-2年组的计数,它可以工作!

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 M F 0 0 1 2 0 0

加拿大0 1 1 0 0

加拿大1 0 M 1 1 0 0

加拿大9 F 0 M 1 1 0 1 0

墨西哥13 M 0 0 0 1 1

墨西哥18 F 0 0 0 1 1

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 20:36:35

考虑创建一个字典,您可以使用它来重新映射您的值。那就用一个热编码。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61641466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档