Python Pandas 混合布尔 Yes/True 和 NaN 列

2024-03-23

我正在学习健康科学课程,推荐使用 R 或 Stata。我正在尝试使用 Python / Numpy / Pandas 来代替,因为我希望将来使用它来进行金融时间序列分析。

数据是 Stata 格式,所以我复制了字段并将它们保存为CSV。 所有字段导入都很好,除了有许多“是/否”列,其中一些列有空白字段。

导入命令是

fhs = pd.io.parsers.read_csv('F:\\BioStatistics\\fds\\fhs_c2.csv', header=0, index_col=0)

如果有空白字段,则数据类型是对象(有意义)

如果没有空格,某些列将转换为TRUE/FALSE,其他人离开为Yes/No但 dtype 是 bool。知道为什么吗?

我希望所有内容都通过一种数据类型并表达一种查看+统计分析的方式。

我通过在开头添加一行,为没有空格的布尔列添加空白单元格来实现这一点 - 所以一切都变成了对象。然后我用fhs = fhs.drop([1002])删除该行并且数据类型仍然很好。

我很想在没有这一行的情况下保存它,并且每次都能够使用“正确”类型加载数据,但不知道当某些列全部是或否,而有些列是空白时是否可能细胞。是否可以?

谢谢,抱歉新手问题。

Example:

输入

      C1    C2    C3

R1   Yes   Yes    No

R2    No    No    No

R3   Yes         Yes

R4   Yes   Yes   Yes

第一列进入 df 为 Yes, No, Yes, Yes 在下面输入 bool xxxx

第二列作为 Yes、No、NaN、Yes 类型对象进入 df

第三列作为 FALSE、FALSE、TRUE、TRUE 类型 bool 进入 df

该死。刚刚检查过。我错了。如果是或否,则列类型为对象。

我想在导入时告诉它,使它们全部对象并坚持是和否,因为: 1.我认为第二列必须是对象(否则我认为它是混合的) 2. 数据集是/否,其他班级成员将查看是和否

当我尝试解决方案时发生了什么。

这是我的数据:link https://i.stack.imgur.com/jIicg.gif

这是代码:
从 pandas 导入 *
将 numpy 导入为 np
将 pandas 导入为 pd

def convert_bool(col):
    if str(col).title() ==  "True": #check for nan
        return "Yes"
    elif str(col).title() == "False":
        return "No"
    else:
        return col

fhs = pd.read_csv('F:\\BioStatistics\\fds\\StatExport.csv', converters={"death": lambda x:convert_bool(x)}, header=0, index_col=0)  

和输出link https://i.stack.imgur.com/moZQA.gif


您可以使用 pandas.read_csv 中的转换器字段

def convert_bool(col):
    if str(col).title() ==  "True": #check for nan
        return "YES"
    elif str(col).title() == "False":
        return "NO"
    else:
        return col
pandas.read_csv(file_in, converters={"C3": lambda x:convert_bool(x)})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pandas 混合布尔 Yes/True 和 NaN 列 的相关文章

随机推荐