如何在熊猫中创建混合类型数据

时间:2020-02-09 13:05:53

标签: python pandas mixed-type

这是一个非常非标准的问题。出于教育目的,我试图在csv文件中创建一个混合类型的列,以便在将数据集导入pandas $this->session->unset_userdata('errors'); 中时收到警告消息,然后处理该列以显示其状态完成。

问题是我会在Excel的字符串列中键入0s,保存并关闭文件,但是聪明的熊猫仍然将该列导入为字符串列,因此它实际上并没有检测到漂浮在其中。

我还尝试使用DataFrame更改熊猫中仅0的格式,然后导出并重新导入。仍然不起作用。

有人知道如何创建一个熊猫将读取混合类型的列吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我正在尝试在csv文件中创建混合类型的列,以便 在熊猫中导入数据集时出现警告消息

Pandas总是会推断出列的类型(Series对象),而这总是一个单一的类型。如果该列中的每个值都是字符串,那么pandas会将其加载为字符串类型的列。

如果存在无法合理地将其作为字符串,整数加载的“混合”值,则推断的类型将仅为dtype: object。这也意味着您不会收到任何警告。


您可以通过dtype参数在加载数据框时强制输入类型。

pd.read_csv("test_file.csv", index_col=0, dtype=int)

现在,大熊猫将尝试将所有内容都转换为int,如果某些值无法转换为int,则会出现类似

的异常

ValueError:以10为底的int()无效文字:'a'

尝试加载其中包含字符串a的数据集时。但是,这不会产生警告,操作只会失败。


这是创建混合列的方法。

df = pd.DataFrame()
df["mix"] = ["a", "b", 1, True]

df.to_csv("test_file.csv")
df_again = pd.read_csv("test_file.csv", index_col=0)
print(df_again["mix"])

mix列的类型是object

...

名称:mix,dtype:object


如果将以上代码中的read_csv更改为

df_again = pd.read_csv("test_file.csv", index_col=0, dtype=int)

您将收到提到的错误。