(Pandas)在百分比中添加百分比符号



例如,我有一个看起来像这样的数据框架

category  numbers
a         100
b         200
c         200

并且我想添加一个列来表示它们的百分比(带有百分比符号)。这就是我所尝试的

df['percentage'] = str(100 * df['numbers']/df['numbers'].sum()) + '%'
但是,这将返回一个数字 的列表。
category  numbers  percentage
a         100      0 20.00 1 40.00 2 40.00 Name: numbers, dtype: float64%
b         200      0 20.00 1 40.00 2 40.00 Name: numbers, dtype: float64%
c         200      0 20.00 1 40.00 2 40.00 Name: numbers, dtype: float64%

我该怎么做才能让它变成20% 40% 40%

正如mozway已经评论的那样,关键是使用.astype(str),它将每个单独单元格的值转换为字符串,而str()则为您提供整个系列的字符串表示。

>>> df = pd.DataFrame({"numbers": [100, 200, 200]})
>>> tmp = 100 * df.numbers / df.numbers.sum()
>>> tmp
0    20.0
1    40.0
2    40.0
Name: numbers, dtype: float64
>>> df["percentage"] = tmp.astype(str) + "%"
>>> df
numbers percentage
0      100      20.0%
1      200      40.0%
2      200      40.0%

最新更新