【发布时间】:2012-10-08 11:46:05
【问题描述】:
我正在学习推荐 R 或 Stata 的健康科学课程。我正在尝试使用 Python / Numpy / Pandas,因为我希望将来将其用于金融时间序列分析。
数据是 Stata 格式,所以我复制了这些字段并将它们保存为 CSV。
所有字段导入都很好,只是有一些是/否列,其中一些有空白字段。
导入命令是
fhs = pd.io.parsers.read_csv('F:\\BioStatistics\\fds\\fhs_c2.csv', header=0, index_col=0)
如果有空白字段,则 dtype 为对象(有意义)
如果没有空格,则某些列将转换为 TRUE/FALSE,其他列将保留为 Yes/No,但 dtype 为 bool。知道为什么吗?
我希望全部使用一种 dtype 并表达一种查看 + 统计分析的方式。
我通过在开头添加一行空白单元格来为没有空格的布尔列添加一行来实现这一点 - 所以一切都变成了一个对象。然后我用
fhs = fhs.drop([1002]) 删除该行并且数据类型仍然很好。
我很想在没有这一行的情况下保存它,并且每次都能够使用“正确”类型加载数据,但不知道是否有可能何时某些列将全部是或否,有些将有空白单元格。有可能吗?
谢谢,对于新手的问题很抱歉。
示例:
导入
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
第 2 列进入 df 为 Yes、No、NaN、Yes 类型对象
第 3 列进入 df 为 FALSE、FALSE、TRUE、TRUE 类型 bool
该死的。刚检查。我错了。如果是和否,则列类型为对象。
我想在导入时告诉它以使它们全部成为对象并坚持是和否,因为: 1.我认为第二列必须是对象(否则我认为它是混合的) 2. 数据集是/否,其他班级成员将查看是和否
当我尝试解决方案时发生了什么。
这是我的数据:link
代码如下:
从熊猫进口 *
将 numpy 导入为 np
将熊猫导入为 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
【问题讨论】:
-
请举例说明问题的数据。
-
示例:导入 C1 C2 C3 R1 是 是 否 R2 否 否 否 R3 是 是 R4 是 是 是 第一列进入 df 为是,否,是,是类型 bool xxxx 下面的第二列进入df 为 Yes, No, NaN, Yes 类型对象第 3 列进入 df 为 FALSE、FALSE、TRUE、TRUE 类型 bool 该死。刚检查。我错了。如果是和否,则列类型为对象。