如何使用Pandas读取csv文件中的列表?

2024-09-22 20:37:52 发布

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

因此,我对csv文件中的列表有问题,然后我去搜索解决方案,我发现: https://github.com/MaxHilsdorf/dealing_with_lists_in_pandas/blob/master/list_values_in_pandas.ipynb 这很好,但由于某些原因,它对我不起作用,让我展示一下代码:

import pandas as pd
fruits = pd.read_csv('D:/Dados Usuario/Área de Trabalho/_python/machine_learning/favorite_fruits.csv', low_memory=True,usecols= ["name","age","favorite_fruits"])
#nome = fruits["name"]
#idade = fruits["age"]
frutas = fruits["favorite_fruits"]
print(frutas)

  favorite_fruits
0            ['1'
1        ['apple'
2              []
3       ['banana'
4   ['strawberry'
5    ['blueberry'
6        ['mango'
7   ['watermelon'
8         ['pear'
9        ['peach'

问题是: 为什么它只读取每个列表的第一个单元格

以下是数据集: https://github.com/MaxHilsdorf/dealing_with_lists_in_pandas/blob/master/fruits.csv

我无法按原样读取任何内容,因此在我的数据集中,我从每个列表中提取“”并只为列表中的每个单元格保留“”,然后我可以读取第一个单元格。 我还必须添加low_memory=True,usecols=[“姓名”、“年龄”、“最喜欢的水果”]。 其他列工作正常,只是这一列的列表不工作


Tags: csvinhttpsgithubmastercompandas列表
1条回答
网友
1楼 · 发布于 2024-09-22 20:37:52

使用标准pandas和python很简单

  • read_csv()以加载文件
  • apply(json.loads)将字符串转换为实际列表
  • 如果要为每个水果指定行explode()

将字符串转换为列表

import requests, json, io
df = pd.read_csv(io.StringIO(requests.get("https://raw.githubusercontent.com/MaxHilsdorf/dealing_with_lists_in_pandas/master/fruits.csv").text), sep=";")
df = df.assign(favorite_fruits=df["favorite_fruits"].apply(json.loads))


^{tb1}$

转换并分解

import requests, json
df = pd.read_csv(io.StringIO(requests.get("https://raw.githubusercontent.com/MaxHilsdorf/dealing_with_lists_in_pandas/master/fruits.csv").text), sep=";")
df.join(df["favorite_fruits"].apply(json.loads).explode(), rsuffix="_val")

样本输出

^{tb2}$

相关问题 更多 >