尝试使用pandas将CSV文件中的所有包含对象数据类型的列导入

2024-04-27 02:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用pandas将csv读入新的数据帧。许多列可能只包含数值,但我仍然希望将它们作为字符串/对象导入,而不是使用float类型的列。在

我正在尝试编写一些用于数据转换/迁移的python脚本。我不是一个高级的Python程序员,主要是在遇到需要解决的问题时学习。在

我要导入的csv有不同数量的列,甚至不同的列标题,并且以任何顺序,我无法控制这些列,因此我不能使用带有read_csvdtype参数显式指定数据类型。我只希望导入的任何列都被视为对象数据类型,以便进一步分析数据质量。在

例如,'Staff ID',和{}列,它们应该是包含7位id的字符串字段,作为float64类型导入。在

我尝试过将astyperead_csv一起使用,并在导入后在数据帧上应用map

注意,对于数据类型或质量的内容没有硬性规定,这就是为什么我总是希望将它们作为对象的dtype导入。在

提前感谢任何能帮我解决这个问题的人。在

我用下面的代码读入它。在

import pandas as pd
df = pd.read_csv("agent.csv",encoding="ISO-8859-1")

这将在df中创建'License Number'列,其类型为float64(以及其他类型)。在

下面是一个许可证号的示例,它应该是一个字符串:

'1275595'存储为1275595.0

{{cd15>将对象^/import转换回它之后,{cd15>中的内容将发生变化


Tags: csv数据对象字符串import类型内容pandas
2条回答

它应该停止转换数据。在

pd.read_csv(..., dtype=str)

文件:read_csv

^{pr2}$

我建议您将csv阅读过程分成多个特定用途的函数。在

例如:

import pandas as pd

# Base function for reading a csv. All the parsing/formatting is done here
def read_csv(file_content, header=False, columns=None, encoding='utf-8'):
    df = pd.read_csv(file_content, header=header, encoding=encoding)
    df.columns = columns
    return df

# Function with a specific purpose as stated in the name.
def read_csv_license_plates(file_content, encoding='utf-8'):
    columns = ['col1', 'col2', 'col3']
    df = read_csv(file_content, True, columns)
    return df

read_csv_license_plates('agent.csv', encoding='ISO-8859-1')

相关问题 更多 >