Сводная таблица в Pandas с двумя столбцами (индекс и значение) - PullRequest
2 голосов
/ 13 апреля 2020

У меня есть файл CSV со столбцами obj и VS. Мне нужно суммировать VS значения для каждого obj и иметь вывод, как показано ниже

Ввод:

+-----+------+
| obj |  VS  |
+-----+------+
| B   | 2048 |
| A   | 1024 |
| B   |   10 |
| A   | 1024 |
| B   | 1025 |
| A   | 1026 |
| B   | 1027 |
+-----+------+

Вывод:

+---+------+
| A | 3074 |
+---+------+
| B | 4110 |
+---+------+

Я попробовал приведенный ниже код, так как у меня есть только два столбца для применения, я добавил value столбец с уникальным значением, чтобы иметь сводную (сводная таблица нуждается в индексе, столбце и значении). Затем Value столбец просто чтобы помочь. Как бы то ни было, сумма - это странная сумма !!!

import pandas as pd 
import numpy as np 

filename='1test.csv'
df = pd.read_csv(filename, dtype='str')
df["value"]=1
pd.pivot_table(df, values="VS", index="obj", columns="value", aggfunc=np.sum)

вывод моего кода :

+-------+----------------+
| value |       1        |
+-------+----------------+
| obj   |                |
| A     |   102410241026 |
| B     | 20481010251027 |
+-------+----------------+

1 Ответ

1 голос
/ 13 апреля 2020

Просто учтите, что при чтении из CSV значения являются строковыми, вам нужно преобразовать их в int с помощью df['VS']=pd.to_numeric(df['VS']) print(df.dtypes) показать тип столбца в df

import pandas as pd 
import numpy as np 

filename='1test.csv'
df = pd.read_csv(filename, dtype='str')
df["value"]=1
print(df.dtypes)
df['VS']=pd.to_numeric(df['VS'])
print(df.dtypes)
pd.pivot_table(df, values="VS", index="obj", columns="value", aggfunc=np.sum)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...