Все комбинации двух датафреймов - PullRequest
0 голосов
/ 22 ноября 2018

Наличие двух фреймов данных:

id  Country Channel Week    Value        
0   ES      Train   2018-48 1000
1   ES      Train   2018-49 1000
2   ES      Train   2018-50 1000
3   ES      Train   2018-51 1000
4   ES      Train   2018-52 1000

и

Week        Product1    Product2    Product3
2018-48     25%         50%         25%
2018-49     25%         50%         25%
2018-50     25%         50%         25%
2018-51     25%         50%         25%
2018-52     25%         50%         25%

Как создать комбинацию из обоих, где я добавляю каждый продукт в каждую строку первого кадра и использую значениеумножить на сам продукт?

Например, в течение первых двух недель это приведет к:

id  Country Channel Week    Value   Product        
0   ES      Train   2018-48 250     Product1
1   ES      Train   2018-48 500     Product2
2   ES      Train   2018-48 250     Product3
3   ES      Train   2018-49 250     Product1
4   ES      Train   2018-49 500     Product2
5   ES      Train   2018-49 250     Product3
6   ...         

1 Ответ

0 голосов
/ 22 ноября 2018

Предполагая, что вы начинаете с фреймов данных df1 и df2, сначала растопите df2 (от широкой к длинной), преобразуйте ваши проценты в числовые значения, а затем объедините с df1:

df2 = pd.melt(df2, id_vars='Week', value_vars=['Product1', 'Product2', 'Product3'])
df2['value'] = pd.to_numeric(df2['value'].str[:-1])

res = df1.merge(df2)\
         .eval('Value = Value * value / 100')\
         .drop('value', 1)

print(res)

    id Country Channel     Week  Value  variable
0    0      ES   Train  2018-48  250.0  Product1
1    0      ES   Train  2018-48  500.0  Product2
2    0      ES   Train  2018-48  250.0  Product3
3    1      ES   Train  2018-49  250.0  Product1
4    1      ES   Train  2018-49  500.0  Product2
5    1      ES   Train  2018-49  250.0  Product3
6    2      ES   Train  2018-50  250.0  Product1
7    2      ES   Train  2018-50  500.0  Product2
8    2      ES   Train  2018-50  250.0  Product3
9    3      ES   Train  2018-51  250.0  Product1
10   3      ES   Train  2018-51  500.0  Product2
11   3      ES   Train  2018-51  250.0  Product3
12   4      ES   Train  2018-52  250.0  Product1
13   4      ES   Train  2018-52  500.0  Product2
14   4      ES   Train  2018-52  250.0  Product3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...