sqlite 将数据Map为整型后,变量只显示NaN值

sczxawaw  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(181)

因此,我遇到了NaN错误,请求df[‘Column’]只显示NaN,我已经将其缩小到代码的这一特定部分,我认为这与我Map数据的方式有关。有谁知道吗?

我的代码如下:

df['country_code'] = df['country_code'].replace(['?'], ) - *there were some '?' values so I wanted to make this empty so that i could later replace with the mean once I'd converted everything to integer*
country_code_map = {'AUS': 1, 'USA': 2, 'CAN': 3, 'BGD': 4, 'BRZ': 5, 'JP': 6, 'ID': 7, 'HR': 8, 'CH': 9, 'FRA': 10, 'FIN': 11}
df['country_code'] = df['country_code'].map(country_code_map)
df['country_code'] = pd.to_numeric(df['country_code'])
df['country_code'] = df['country_code'].replace([''], df['country_code'].mean)

如果需要任何额外信息,请让我知道。

j91ykkif

j91ykkif1#

我用以下方式创建了df['country_code'],您应该有类似的东西:

import pandas as pd

d = {'country_code': ["?", "BRZ", "USA"]}
df = pd.DataFrame(data=d)
print(df)

产出:

country_code
0            ?
1          BRZ
2          USA

现在,如果我执行您的代码,我得到的是:

country_code
0           NaN
1           5.0
2           2.0

您在输出中得到的是NaN值,而不是列中的平均值,原因如下。
让我们来看看这一行:

df['country_code'] = df['country_code'].replace(['?'], )
print(df)

产出:

country_code
0           NaN
1           5.0
2           2.0

在这里,您没有擦除?,而是用NaN值填充它。
所以当您读到最后一行时,您要做的是替换空字符串'',但是您有nan。您应该使用DataFrame.fillna来填充NAN,如下所示:

df['country_code'] = df['country_code'].replace(['?'], ) 
country_code_map = {'AUS': 1, 'USA': 2, 'CAN': 3, 'BGD': 4, 'BRZ': 5, 'JP': 6, 'ID': 7, 'HR': 8, 'CH': 9, 'FRA': 10, 'FIN': 11}
df['country_code'] = df['country_code'].map(country_code_map)
df['country_code'] = pd.to_numeric(df['country_code'])
df['country_code'] = df['country_code'].fillna(df['country_code'].mean())

产出:

country_code
0           3.5
1           5.0
2           2.0
oknwwptz

oknwwptz2#

所以我意识到问题出在我的Map和转换为整数。一旦我Map了数据,它就会自动执行此操作。

因此代码应如下所示:

country_code_map = {'AUS': 1, 'USA': 2, 'CAN': 3, 'BGD': 4, 'BRZ': 5, 'JP': 6, 'ID': 7, 'HR': 8, 'CH': 9, 'FRA': 10, 'FIN': 11}
df['country_code'] = df['country_code'].map(country_code_map)

然后,我可以检查平均值,而不需要像以前那样获得NaN值:

df['country_code'].mean)

相关问题