Объедините информацию из одного DataFrame и присоедините его к другому DataFrame - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть две панды DataFrames: одна - это история транзакций между компаниями (их идентификаторы), неделя транзакции и сумма транзакции. Таким образом, каждая компания в столбце «продажа» осуществляет транзакции с компаниями из разных регионов (столбец «покупка»).

Другая таблица спецификаций содержит идентификаторы компании и региона. Мне нужно создать функцию для модели ML - средний платеж от каждой компании в каждый регион и присоединить его к спецификации dataframe.

Я не могу просто присоединить столбец «регион» к таблице транзакций, потому что не все компании из таблицы спецификации находятся в столбце «продать» или «купить». Компании из таблицы спецификаций: или в столбце 'продать' или в столбце 'купить'.

Первый DataFrame (транзакции): enter image description here

Второй DataFrame (спецификация): enter image description here

Мне нужен DataFrame вот так: enter image description here

Я думаю, что двигаться к групповому игроку, «продать Id», но понятия не имею, что делать дальше.

Пожалуйста, помогите

1 Ответ

2 голосов
/ 30 апреля 2019

Это может быть то, что вы ищете.

# Generate sample data
df = pd.DataFrame([['AAA','CCC',25,14],['AAA','CCC',50,18],['AAA','DDD',10,20],['AAA','DDD',20,25]])
    df.columns = ['sell','buy','sum','week']

#Generate second table
spec = pd.DataFrame([['CCC',21],['DDD',22]])
spec.columns = ['companyID','region']

# Merge the two dataframes
df = df.merge(spec, left_on='buy',right_on='companyID')

# Group by whatever columns you need, and take the mean
df = df.groupby(['sell','region'])['sum'].mean().reset_index()

# Pivot your data
df.pivot(index='sell', columns='region', values='sum')

выход

region    21    22
sell
AAA     37.5  15.0
...