我正在使用Python中的PANDAS处理数据帧。我用pandas.read_csv(...)
读取了一个csv文件。在此csv文件中,列'possible_stops'
包含列表(此列中的每个单元格看起来像:[ ]
或[str0,str1]
)。
我想用itertuples()
遍历行,对于每一行,我想访问'possible_stops'
列中的列表。
但是,此列的dtype为object
,当我寻找特定单元格的类型(type(row.possible_stops)
)时,它将返回str
。我认为dtype = ..
方法中的read_csv
与某事有关,但是我不知道该怎么办。
如何将此列内的单元格转换为列表?
非常感谢!
编辑: 产生的df看起来像:
latitude longitude gps_speed possible_stops
1.05869 1574942547 0.0 [['Bapeaume', 2]]
1.05862 1573910439 0.0 [['Bapeaume', 2]]
1.05862 1573910441 0.0 [['Bapeaume', 2]]
1.05862 1573910443 0.0 [['Bapeaume', 2]]
1.05862 1573910445 0.0 [['Bapeaume', 2]]
1.05862 1573910447 0.0 [['Bapeaume', 2]]
答案 0 :(得分:1)
Pandas数据框中的列中的项目不可能具有数据类型“列表”。在此处查看数据框列的可能数据类型列表:https://pbpython.com/pandas_dtypes.html。
因此,存储在数据框中的类型不是“列表”,而是将列表作为字符串对象插入。 但是,仍然可以使用双for循环在数据框的列表中输入项目。例如打印每个项目:
import pandas as pd
data = {'possible_stops':[['str0', 'str1'], ['str2', 'str3']], 'Age':[[20, 21], [19, 18]]}
df = pd.DataFrame(data)
for row in df.itertuples():
for item in row.possible_stops:
print(item)
这将在创建的数据集中一一打印名称。
答案 1 :(得分:0)
我找到了一种方法,可以使用ast.literal_eval()
for row in selection_traces.itertuples():
l=ast.literal_eval(row.possible_stops)
此论坛上的问题已解决...抱歉,谢谢!