【问题标题】:read_csv specifying dtype of a particular column to read as listread_csv 指定要读取为列表的特定列的 dtype
【发布时间】:2021-09-15 08:48:24
【问题描述】:

我正在尝试使用 read_csv 方法读取 CSV 文件。 item_number 列需要作为列表读取。

例如:'item_number' : ['123456']

df = pd.read_csv(filepath, sep =',', dtype = {'item_number' = list})

dtype = {'item_number' = list} -> 不起作用,而当我将其写为 dtype = {'item_number' = str} 时,它确实起作用。尝试使用转换器,但想使用 dtype 来完成。

【问题讨论】:

    标签: python python-3.x pandas dtype


    【解决方案1】:

    我认为 list 不是有效的 pandas dtype。您可以将其作为字符串读入,然后将其转换为列表

    file_str = '''1|[123456]
    2|[345678]'''
    
    df = pd.read_csv(io.StringIO(file_str), sep='|', header=None)
    df[2] = df[1].apply(lambda x: list(x[1:-1]))
    print(df)
    #   0         1                   2
    #0  1  [123456]  [1, 2, 3, 4, 5, 6]
    #1  2  [345678]  [3, 4, 5, 6, 7, 8]
    

    【讨论】:

    • 我想在阅读 csv 时内联阅读。
    【解决方案2】:

    我想你的意思是?

    df = pd.read_csv(filepath, sep =',', dtypes = {'item_number': list})
    

    但我不确定你的数据集是否可行,所以我想你需要:

    df = pd.read_csv(filepath, sep =',', dtypes = {'item_number': pd.eval})
    

    编辑:

    试试:

    df = pd.read_csv(filepath, sep =',')
    df['item_number'] = df['item_number'].str[1:-1].map(list)
    

    【讨论】:

    • @Sh2021 编辑了我的答案,现在应该可以使用了
    猜你喜欢
    • 2016-09-27
    • 2019-09-02
    • 2018-09-16
    • 2021-12-24
    • 2020-01-28
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多