【发布时间】:2019-08-04 07:01:22
【问题描述】:
您好,我有一个问题要将对象列表转换为整数列表。这些对象位于 Pandas 数据框“Kanten”的“stopsequence”列中。所有这些都是我在列中进行 CSV 导入和数据清理之后收到的。我正在使用 Python 3.X
我是 Python 新手,也许这就是问题的一部分。
import pandas as pd
import numpy as np
import os
import re
import ast
orgn_csv = pd.read_csv(r"Placeholder path for csv file")
df = orgn_csv.dropna()
Kanten = pd.DataFrame({"stopsequence" : df.stopsequence})
# In between is a block in which I use regular expressions for data cleaning purposes.
# I left the data cleaning block out to make the post shorter
Kanten.stopsequence = Kanten.stopsequence.str.split (',')
print (Kanten.head())
print (Kanten.stopsequence.dtype)
这给出了以下输出:
stopsequence
2 [67, 945, 123, 122, 996, 995, 80, 81, 184, 990...
3 [67, 945, 123, 122, 996, 995, 80, 81, 184, 990...
4 [67, 945, 123, 122, 996, 995, 80, 81, 184, 990...
5 [67, 945, 123, 122, 996, 995, 80, 81, 184, 990...
6 [67, 945, 123, 122, 996, 995, 80, 81, 184, 990...
object
我正在寻找一种方法来转换包含对象的列表。我仔细搜索了 StackOverflow 论坛,尝试了很多不同的方法。没有他们我是成功的。 我尝试使用:
Kanten.stopsequence = Kanten.stopsequence.astype(str).astype(int)
This Returns:
ValueError: invalid literal for int() with base 10:
使用 atoi 代替 atof 修改了 following post
Kanten.stopsequence.applymap(atoi)
This Returns:
AttributeError: 'Series' object has no attribute 'applymap'
Kanten.stopsequence = list(map(int, Kanten.stopsequence))
This returns:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
Kanten.stopsequence = Kanten.stopsequence.apply(ast.literal_eval)
This returns:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
有人看到解决方案吗?我不确定这是一个复杂的案例,还是我只是缺乏一些进一步的编程经验。如果可能的话,简短的解释会有所帮助。我可以自己再次找到解决方案。提前谢谢你。
【问题讨论】:
-
stopsequence的样本? -
您说您从 CSV 文件导入此数据。为什么不直接从 CSV 创建
DataFrame? -
@DirtyBit 你的意思是我从 CSV 文件中加载的原始值的样本吗?
-
@emporerblk 我还添加了
read_csv以更清楚地说明我在做什么。我在做这件事的同时也在学习。所以我绝对有可能做的事情并不“理想”。