【问题标题】:Pandas how to read csv with mixed type columnPandas 如何使用混合类型列读取 csv
【发布时间】:2021-08-25 11:45:28
【问题描述】:

这就是我想要的。当我运行以下代码时

import pandas as pd
df = pd.DataFrame({'col': ['a', 1, 2, 3]})
print(df[1:].infer_objects().dtypes)

预期结果:col int64 如果我加载与 csv 相同的 Dataframe,结果会有所不同:

import pandas as pd
pd.DataFrame({'col': ['a', 1, 2, 3]}).to_csv('tmp.csv', index=False)
df = pd.read_csv('tmp.csv')
print(df[1:].infer_objects().dtypes)

我收到col object。

为什么结果不同?在第二种情况下,我应该如何加载 csv 以获取 col int64?

【问题讨论】:

  • 你可以试试convert_dtypes
  • 当我使用 convert_dtypes 我得到 col 字符串。我期待 int64。
  • 如果有人对我最终得到的解决方案感兴趣——我决定在调用 pandas.read_csv 时使用 converters 参数

标签: python pandas csv types


【解决方案1】:

我认为使用 pandas 的 read_csv() 函数提取的列默认情况下是包含字符串的列,以避免任何问题。

但是,您可以使用以下方法修改列的类型:

df['your_column'] = pd.to_numeric(df['your_column'])

或整个数据帧:

df = df.apply(pd.to_numeric)

【讨论】:

  • 这里的问题是我想像第一种情况一样获得混合类型的列。有没有办法将csv读入混合类型的DataFrame?
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2016-07-11
  • 1970-01-01
  • 2014-03-26
  • 2019-02-02
  • 2014-11-15
相关资源
最近更新 更多