我有一个 pandas 数据框,其结构如下:
| ID | Start | Stop |
________________________________________
| 1 | 1,2,3,4 | 5,6,7,7 |
| 2 | 100,101 | 200,201 |
对于数据框中的每一行,我想为“开始”列中的每个值添加 1。 “开始”列的数据类型是“object”。
所需的输出如下所示:
| ID | Start | Stop |
________________________________________
| 1 | 2,3,4,5 | 5,6,7,7 |
| 2 | 101,102 | 200,201 |
我已经尝试了以下方法(以及以下方法的许多版本),但收到错误消息,TypeError:无法连接“str”和“int”对象,:
df['test'] = [str(x + 1) for x in df['Start']]
我尝试将列转换为 int,但得到“以 10 为基数的 long() 的文字无效:'101,102':
df['test'] = [int(x) + 1 for x in df['start'].astype(int)]
我尝试使用 str.split() 将字段转换为列表,然后将每个项目转换为整数:
提前致谢!
最佳答案
df['Start']
是整个系列,因此您必须迭代它,然后然后分割:
new_series = []
for x in df['Start']:
value_list = []
for y in x.rstrip(',').split(','):
value_list.append(str(int(y) + 1))
new_series.append(','.join(value_list))
df['test'] = new_series
关于python - 为 pandas 数据框中逗号分隔字符串中的每个项目添加 +1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237898/