У меня есть текстовый документ с информацией о расходах. Я хочу использовать pandas и Python 3 для преобразования текста в кадр данных с двумя столбцами без повторения имен строк путем объединения одинаковых имен в одну строку с соответствующими суммами, добавленными для получения единого итога.

Оригинальный файл

shaving 150  
shaving 200  
coffee 100  
food 350  
transport 60  
transport 40  

Желаемый выходной кадр данных:

CATEGORY       TOTAL

shaving        350  
coffee         100  
food           350  
transport      100  
0
John Aiton 3 Июл 2019 в 14:06

3 ответа

Лучший ответ

Это должно сделать это:

df = pd.read_csv('spending.txt', header=None, sep='\s+')
df.columns = ['category', 'total']

df.groupby('category', as_index=False).sum()

    category  total
0     coffee    100
1       food    350
2    shaving    350
3  transport    100
1
zipa 3 Июл 2019 в 11:11

Чтение в данных

temp = StringIO("""  
shaving 150
shaving 200
coffee 100
food 350
transport 60
transport 40
""")

df = pd.read_csv(temp, sep='\s+', engine='python', header=None)

df.groupby(0).sum().reset_index().rename({0:'category',1:'total'}, axis=1)

< Сильный > Выход

   category  total
0     coffee    100
1       food    350
2    shaving    350
3  transport    100
0
iamklaus 3 Июл 2019 в 11:11
  1. Прочитать файл, используя read_csv
  2. Применить группу по
df = pd.read_csv('test.txt', sep=" ", header=None)
df.rename(columns={0:'category',1:'Total'},inplace=True)

final_df = df.groupby(['category'],as_index=False)['Total'].sum()
print(final_df)
     category  Total
0     coffee    100
1       food    350
2    shaving    350
3  transport    100
0
tawab_shakeel 3 Июл 2019 в 11:11