在python中以列表形式读取数据?
这是我的book.csv文件中的数据在python中以列表形式读取数据?,python,pandas,list,csv,Python,Pandas,List,Csv,这是我的book.csv文件中的数据 x y [133,28,23] female [157,22,87] male [160,33,77] male [122,87,20] female [120,22,20] female 在执行以下命令后,l1存储此值: >>fd=pandas.read_csv("C://users/admin/Desktop/Book1.csv") >>l1=[h for h in fd.x] 以下输出是列表格式的字符串
x y
[133,28,23] female
[157,22,87] male
[160,33,77] male
[122,87,20] female
[120,22,20] female
在执行以下命令后,l1
存储此值:
>>fd=pandas.read_csv("C://users/admin/Desktop/Book1.csv")
>>l1=[h for h in fd.x]
以下输出是列表格式的字符串,但我希望嵌套列表如下所示:
['[133,28,23]', '[157,22,87]', '[160,33,77]', '[122,87,20]', '[120,22,20]']
我需要做哪些更改?您可以使用以下操作: 输出
import pandas as pd
import ast
data = [['[133,28,23]', 'female'],
['[157,22,87]', 'male'],
['[160,33,77]', 'male'],
['[122,87,20]', 'female'],
['[120,22,20]', 'female']]
df = pd.DataFrame(data=data, columns=['x', 'y'])
df['x'] = df['x'].apply(ast.literal_eval)
result = df['x'].tolist()
print(result)
您可以使用json:
[[133, 28, 23], [157, 22, 87], [160, 33, 77], [122, 87, 20], [120, 22, 20]]
或ast
>> import json
>> fd=pandas.read_csv("C://users/admin/Desktop/Book1.csv")
>> l1=[json.loads(h) for h in fd.x]
[[133,28,23],[157,22,87],[160,33,77],[122,87,20],[120,22,20]]
一种简单的方法,如果您不想求助于
ast
(例如,为了避免解析非列表的内容):
输出:
[[133,28,23],[157,22,87],[160,33,77],[122,87,20],[120,22,20]]
data.x.tolist()仍然相同的可能重复的>>fd.x.tolist()['[133,28,23]'、'[157,22,87]'、'[160,33,77]'、'[122,87,20]'、'[120,22,20]']
>> import json
>> fd=pandas.read_csv("C://users/admin/Desktop/Book1.csv")
>> l1=[json.loads(h) for h in fd.x]
[[133,28,23],[157,22,87],[160,33,77],[122,87,20],[120,22,20]]
>> import ast
>> fd=pandas.read_csv("C://users/admin/Desktop/Book1.csv")
>> l1=[ast.literal_eval(h) for h in fd.x]
>> [[133,28,23],[157,22,87],[160,33,77],[122,87,20],[120,22,20]]
from io import StringIO
inp = """ x y
[133,28,23] female
[157,22,87] male
[160,33,77] male
[122,87,20] female
[120,22,20] female"""
# Read data
df = pd.read_csv(StringIO(inp), delim_whitespace=True, header=0)
# Remove brackets, split and convert to int
df.x = df.x.map(lambda el: list(map(int, el.strip()[1:-1].split(','))))
# Print
l1 = [h for h in df.x]
print(l1)