Сначала создали временный столбец с именем category, который я затем заполнил, сгруппировал по этому столбцу, чтобы получить сумму, а затем сопоставил его с соответствующими значениями store_desc.

я есть CSV-файл, где каждая строка представляет свойство, за которым следует переменное число последовательных строк, которые отражают комнаты в свойстве. Я хочу создать столбец, который для каждого свойства суммирует общую площадь пола каждой комнаты. Неструктурированный характер данных затрудняет достижение этого вpandas, Вот пример таблицы, которую я имею на данный момент:

id  ba  store_desc      floor_area
0   1   Toy Shop        NaN
1   2   Retail Zone A   29.42
2   2   Retail Zone B   31.29
3   1   Grocery Store   NaN
4   2   Retail Zone A   68.00
5   2   Outside Garden  83.50
6   2   Office          7.30

Вот таблица, которую я пытаюсь создать:

id  ba  store_desc      floor_area   gross_floor_area
0   1   Toy Shop        NaN          60.71
3   1   Grocery Store   NaN          158.8

У кого-нибудь есть указания на то, как этого добиться? Я полностью потерян.

Сэм

Ответы на вопрос(2)

Решение Вопроса

IIUC

df1=df[df['floor_area'].isnull()]

df1['gross_floor_area']=df.groupby(df['floor_area'].isnull().cumsum())['floor_area'].sum().values

df1
Out[463]: 
   id  ba    store_desc  floor_area  gross_floor_area
0   0   1       ToyShop         NaN             60.71
3   3   1  GroceryStore         NaN            158.80

который я затем заполнил, сгруппировал по этому столбцу, чтобы получить сумму, а затем сопоставил его с соответствующими значениями store_desc.

df['category'] = df[df.floor_area.isnull()]['store_desc']

df['category'].fillna(method='ffill',inplace=True)

df['gross_floor_area'] = df.store_desc.map(df.groupby('category').sum().floor_area)

df.drop('category',axis=1,inplace=True)

df[df.gross_floor_area.notnull()]

Ваш ответ на вопрос