例如,我有一个看起来像这样的数据框架
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%