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

问题描述 投票:0回答:1

这是一个非标准的问题。出于教育目的,我试图在csv文件中创建一个混合类型的列,以便在将数据集导入pandas数据框中时收到警告消息,然后处理该列以显示其完成方式。

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

我还尝试使用astype('float')更改熊猫中仅这些0的格式,并进行导出和重新导入。仍然不起作用。

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

提前感谢!

pandas mixed-type
1个回答
0
投票

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

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

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


通过dtype参数加载数据帧时,可以强制类型。

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

现在熊猫将尝试将所有内容都转换为int,如果有些值无法转换为int,您将得到一个异常,例如

ValueError:int()的无效文字,基数为10:'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列的类型是对象

...

名称:混合,dtype:对象


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

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

您将得到所提到的错误。

© www.soinside.com 2019 - 2024. All rights reserved.