python - Pandas:向过滤器添加列会扰乱数据结构

标签 python pandas

考虑此 zip file 后面的 .dta 文件.

这是第一行:

>>> df = pd.read_stata('cepr_org_2014.dta', convert_categoricals = False)
>>> df.iloc[0]
year                   2014
month                     1
minsamp                   8
hhid        000936071123039
hhid2                 91001
# [...]
>>> df.iloc[0]['wage4']
nan

我使用stata仔细检查了这一点,它看起来是正确的。到目前为止,一切都很好。现在我设置了一些我想保留的列并重做练习。

>>> columns = ['wbho', 'age', 'female', 'wage4', 'ind_nber']
columns2 = ['year', 'month', 'minsamp', 'hhid', 'hhid2', 'fnlwgt']
>>> df = pd.read_stata('cepr_org_2014.dta',
    convert_categoricals = False,
    columns=columns+columns2)
>>> df.iloc[0]
wbho                       1
age                       65
female                     0
wage4       1.7014118346e+38
ind_nber                 101
year                    2014
month                      1
minsamp                    8
hhid                     NaN
hhid2                    NaN
fnlwgt              560.1073
Name: 0, dtype: object

添加要保留的列列表后,pandas

  • 不再理解缺失值,wage4 很大,而不是 NaN
  • hhidhhid2 创建缺失值。

为什么?

脚注:首先加载数据集,然后使用 df[columns+columns2] 进行过滤。

最佳答案

我将此错误追溯到 pandas 中的一个错误。我已修复 https://github.com/jbuyl/pandas/tree/fix-column-dtype-mixing 中的错误并打开了一个拉取请求来合并修复程序,但请随意查看我的分支/分支。

以下是运行示例的结果:

>>> columns = ['wbho', 'age', 'female', 'wage4', 'ind_nber']
>>> columns2 = ['year', 'month', 'minsamp', 'hhid', 'hhid2', 'fnlwgt']
>>> df = pd.read_stata('cepr_org_2014.dta',
...     convert_categoricals = False,
...     columns=columns+columns2)
>>> df.iloc[0]
wbho                      1
age                      65
female                    0
wage4                   nan
ind_nber                NaN
year                   2014
month                     1
minsamp                   8
hhid        000936071123039
hhid2                 91001
fnlwgt              560.107
Name: 0, dtype: object

关于python - Pandas:向过滤器添加列会扰乱数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31783392/

相关文章:

python - Scipy curve_fit 因多参数拟合而失败。有没有办法改善结果?

python - 使用 Corduroy couchdb 异步库时 tornado.gen 中的 BadYieldError

python - 从脚本和命令行访问函数

python - 如何将 HTML 表格转换为 Python 字典

python - Pandas 按月计算唯一出现次数

python - 基于两列 Pandas 映射字典的最有效方法

python - Pandas 图(种类 ='line' )创建散点图

python - 随机排列训练测试分割函数中的数据 sklearn 返回错误

Pandas 每月/每周变化的聚合订单

python - 聚合组产生 Pandas 数据框