【问题标题】:ValueError: invalid literal for int() with base 10: ' ' , calcul on dataframeValueError: int() 以 10 为底的无效文字:'',在数据帧上计算
【发布时间】:2021-08-11 12:56:25
【问题描述】:

我想添加一列,返回数据框中每一行的每个数字的总和。 这是我的代码和显示的错误:

import pandas as pd

serie = pd.DataFrame({'num':[133,2342,313,4495,4939,19081993,80]})

serie['sum_num'] = sum(map(int,str(serie['num'])))

错误:

--------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-65-549615926d0b> in <module>
----> 1 serie['sum_num'] = sum(map(int,str(serie['num'])))

ValueError: invalid literal for int() with base 10: ' '

你能帮帮我吗?

【问题讨论】:

  • serie['sum_num'] = serie['num'].sum() 应该可以解决问题
  • 如果你只是想看一些系列,那就是sum(serie['num'])serie['num'].sum()。但我不清楚你是否真的需要它——map(int,str(...)) 部分似乎很荒谬,而且“每一行的每个数字的总和”也不是那么清楚。你能为这个例子提供所需的输出吗?
  • 我想我没有说清楚。例如对于我的数据框的第一列 ['num'] = 133,我想要列 ['sum_num'] = 1 + 3 + 3 = 7

标签: python dataframe sum series


【解决方案1】:

试试:

serie["sum_num"] = serie["num"].apply(lambda x: sum(map(int, str(x))))
print(serie)

打印:

        num  sum_num
0       133        7
1      2342       11
2       313        7
3      4495       22
4      4939       25
5  19081993       40
6        80        8

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 2020-01-04
    • 2010-12-22
    • 2011-07-07
    • 2019-10-14
    • 2022-05-19
    相关资源
    最近更新 更多