Измените каждую ячейку в фрейме данных pandas на проценты - PullRequest
1 голос
/ 11 марта 2020

У меня есть набор данных, который читает 13 CSV-файлов на столбец. Каждая строка представляет кластеры (всего 4), а данные отражают частоту появления каждого файла в каждом из этих кластеров. У меня вопрос, как мне конвертировать каждую ячейку в проценты? Вот как выглядит мой фрейм данных прямо сейчас:

enter image description here

Вот как бы я хотел, чтобы он выглядел:

row_0    001.csv    002.csv    003.csv    004.csv   005.csv
0        0%         0.35%
1        86.08%     0%
2        0.07%      0%
3        0.06%      1.24%

Каждое значение в каждой ячейке превышает 10000.

1 Ответ

2 голосов
/ 11 марта 2020

Так как ваша общая сумма равна 10000, вы можете просто разделить ее на 100 и отформатировать:

# random data
np.random.seed(1)
df = pd.DataFrame(np.random.choice([2345, 123, 6789], 
                                   size=(5,5))
                 )
df.div(100).astype('str').add('%')

Вывод:

        0       1       2       3       4
0   1.23%  23.45%  23.45%   1.23%   1.23%
1  23.45%  23.45%   1.23%  23.45%   1.23%
2  23.45%  67.89%   1.23%  67.89%  23.45%
3  67.89%   1.23%  67.89%  23.45%  23.45%
4  67.89%  23.45%   1.23%  67.89%  67.89%
...