Почему я не могу перебрать сумму панд?

#python #pandas

Вопрос:

Я пытаюсь сгруппироваться по ключу «ASIN» и суммировать столбцы групп, а затем я хочу выполнить итерацию и распечатать каждый столбец («Имя»,»ASIN»,»Отправленные товары»).

     df = pd.read_csv('data.csv')
    gk = df[['Name','ASIN','Items Shipped']].groupby('ASIN')
    print(gk.sum())
    for row in gk.sum():
        print(row)
 

Печать gk.sum() показывает часть фрейма данных, я мало что вижу, но вижу, что в нем есть куча списков «ASIN». Но если я попытаюсь повторить эти строки, чтобы напечатать отдельные строки «Имя», » КАК » и «Отправленные товары», я получу только одну напечатанную строку «Отправленные товары». Я вырываю свои волосы! Что я делаю не так?

Комментарии:

1. Установите as_index=False в groupby качестве — groupby("ASIN", as_index=False) и посмотрите, сможете ли вы распечатать их все при повторении.

2. не могли бы вы, пожалуйста, поделиться образцом фрейма данных и образцом выходных данных. Вы всегда можете выполнить группировку и суммирование, чтобы получить значения в другом кадре данных. Я не вижу в этом проблемы. И что вы хотите подвести итог, пожалуйста? 'Items Shipped' или в какой-то другой колонке?

Ответ №1:

Предполагая , что вы хотите выполнить цикл по gk.sum() кадру данных, вы можете выполнить цикл по строкам кадра данных с помощью pd.DataFrame.iterrows() :

 df = pd.read_csv('data.csv')

gk = df[['Name','ASIN','Items Shipped']].groupby('ASIN')
print(gk.sum())

for index, row in gk.sum().iterrows():
    print(row)
 

Выход:

 columnname1    value1
columnname2    value2
Name: 1, dtype: int64
columnname1    value1
columnname2    value2
Name: 2, dtype: int64
...