Python: итерация по фреймам данных - PullRequest
1 голос
/ 21 июня 2020

Я новичок в python, и мне нужна небольшая помощь с моим кодом, чтобы выполнить итерацию по разным фреймам данных с теми же столбцами.

Мой фрейм данных выглядит так:

Date, Product, Value1, Value2
13-3-2020, A, 10, 15
13-4-2020, A, 11, 26
13-5-2020, A, 14, 14
2-2-2018, B, 10, 15
18-2-2018, B, 11, 26
5-4-2018, B, 14, 14
5-5-2018, B, 12, 12

Я создал список фреймов данных, сгруппированных по продуктам:

groups = list(df.groupby('Product'))

И затем я хочу заполнить каждый фрейм данных первым днем ​​месяца между первой и последней датами. К сожалению, у меня только последний продукт в качестве вывода, как отдельный фрейм данных.

Я пробовал этот код:

for g, grp in groups:
    month_grp = pd.Series(pd.date_range(start=min(grp['Date']), end=max(grp['Date']), freq='MS'), name="Date").to_frame()
    grp = grp.append(month_grp, ignore_index=True)
    grp = grp.sort_values(by='Date').reset_index(drop=True)

    print(grp)

        Date Product  Value1  Value2
0 2018-02-02       B    10.0    15.0
1 2018-02-18       B    11.0    26.0
2 2018-03-01     NaN     NaN     NaN
3 2018-04-01     NaN     NaN     NaN
4 2018-05-01     NaN     NaN     NaN
5 2018-05-04       B    14.0    14.0
6 2018-05-05       B    12.0    12.0

Решение, которое я ищу, это итерация по каждому продукту, фреймворку данных. И в идеале сохранить этот результат в групповом списке фреймов данных, потому что потом я выполняю больше вычислений.

Любая помощь будет признательна. Даже если это новый подход к тому, как обрабатывать этот фрейм данных по группам, и это не корыто pandas.

Заранее спасибо.

1 Ответ

0 голосов
/ 21 июня 2020

Я смог найти решение благодаря предложению davidbilla. Я создал новый df, в который добавляю результаты из l oop.

data = StringIO("""\Date, Product, Value1, Value2""")
dff = pd.read_table(data, sep=', ', parse_dates=[0])

for g, grp in groups:
    month_grp = pd.Series(pd.date_range(start=min(grp['Date']),end=max(grp['Date']), freq='MS'), name="Date").to_frame()
grp = grp.append(month_grp, ignore_index=True)
grp = grp.sort_values(by='Date').reset_index(drop=True)
dff = dff.append(grp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...