【发布时间】:2015-08-26 22:44:21
【问题描述】:
我有一个结构如下的熊猫数据框:
| ID | Start | Stop |
________________________________________
| 1 | 1,2,3,4 | 5,6,7,7 |
| 2 | 100,101 | 200,201 |
对于数据框中的每一行,我想为 Start 列中的每个值加 1。 Start 列的 dtype 是 'object'。
所需的输出如下所示:
| ID | Start | Stop |
________________________________________
| 1 | 2,3,4,5 | 5,6,7,7 |
| 2 | 101,102 | 200,201 |
我尝试了以下(以及以下的许多版本),但收到一条错误消息:TypeError: cannot concatenate 'str' and 'int' objects,:
df['test'] = [str(x + 1) for x in df['Start']]
我尝试将该列转换为 int,但得到了“invalid literal for long() with base 10: '101,102':
df['test'] = [int(x) + 1 for x in df['start'].astype(int)]
我尝试使用 str.split() 将字段转换为列表,然后将每个项目转换为整数:
提前致谢!
【问题讨论】:
-
你试过
df['test'] = [str(int(x) + 1) for x in df['Start']]吗? -
我做到了,它抛出了同样的“long() invalid literal with base 10:...”错误。
-
同时使用
split和int时出现什么错误?完整的错误,没有省略号。 -
Traceback(最近一次调用最后):文件“/Users/selasady/impala_scripts/testing.py”,第 21 行,在
df['test'] = [str(int(x ) + 1) for x in df['start']] ValueError: invalid literal for int() with base 10: '101,102,'