#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
...