我有这段代码:
Link to code and data on GitHub
col_names = {'age_code':'str', 'los_code':'str', 'race_code':'str'}
injuries = pd.read_table(some_url, dtype=col_names)
los_code
,age_code
和race_code
有另一个包含代码的表格。例如race_code
是:
race_code race_text
0 0000 All races
1 1XXX White, non-Hispanic
2 2XXX Black, non-Hispanic
3 3XXX Hispanic
4 4XXX Asian or Pacific Islander
5 5XXX American Indian or Alaskan Native
6 NRXX Not reported
阅读之后,除了代码为NaN
之外,所有这三个列都有0000
个条目。如果列条目是1XXX
到NRXX
中的任何一个,则该条目将变为NaN
。
由于int
条目,pandas正在将列读作0000
,但在阅读X
条目后会感到困惑(可能会将其混淆为十六进制)
如何强制pandas以字符串形式读取这些条目。
此外我也收到错误:
DtypeWarning:列(1,4,5,6,7,8,9)具有混合类型。在导入时指定dtype选项或设置low_memory = False。 interactivetivity = interactivity,compiler = compiler,result = result)
答案 0 :(得分:1)
使用'object'
代替'str'
。
col_names = {'age_code':'object', 'los_code':'object', 'race_code':'object'}
考虑使用col_dtypes
而不是col_names
之类的内容作为变量名称。另请考虑阅读Pandas docs以找到此类问题的答案。
聚苯乙烯。这是一个警告,而不是你得到的错误。
修改强>
好的,我看了你的数据和代码。当我在简单的MS Excel中打开你的桌子时,这是一个屏幕剪辑。你能告诉我age_code,race_code和los_code的值在哪里吗?因为如果列中没有数据,Pandas将在那里插入NaN。另请注意屏幕截图右下角Excel生成的摘要统计信息。平均值= 0,Min = 0,Max = 0,Sum = 0,Count = 410.有410个读数,并且都是零。我选择了感兴趣的三列中的所有行。您正在阅读的表格中缺少数据。
然后,单独阅读age_code,race_code和los_code的表似乎没什么问题。最后,从警告中获取提示,并在low_memory=False
而不是pd.read_table()
中传递dtype=col_names
。
我认为您的问题已得到解答,因为您的数据中缺少值。它们不是由Pandas引起的,也不是由您的代码引起的。