Панды - заполнение каждой строки одного Dataframe значением из другого Dataframe - PullRequest
0 голосов
/ 14 января 2019

У меня есть два Dataframes, один с набором дат (df1) и другой с набором emp_ids (df2). Я пытаюсь создать новый Dataframe таким образом, чтобы каждый emp_id в df2 был привязан к каждой дате в df1.

Ниже показано, как выглядит мой Dataframe

df1

2018-01-01
2018-01-02
2018-01-03
2018-01-04

df2

emp_1
emp_2
emp_3

Ожидаемый результат:

2018-01-01,emp_1
2018-01-02,emp_1
2018-01-03,emp_1
2018-01-04,emp_1
2018-01-01,emp_2
2018-01-02,emp_2
2018-01-03,emp_2
2018-01-04,emp_2
2018-01-01,emp_3
2018-01-02,emp_3
2018-01-03,emp_3
2018-01-04,emp_3

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

Я пытался сделать pd.merge(df1, df2])

1 Ответ

0 голосов
/ 14 января 2019

То, что вы пытаетесь сделать, называется carthesian product. В pandas вы можете сделать это следующим образом:

df1['key'] = 0
df2['key'] = 0

result = df1.merge(df2, how='outer').drop('key',axis= 1)

Редактировать: , чтобы доказать, что это работает

df1 = pd.DataFrame(['2018-01-01','2018-01-02','2018-01-03','2018-01-04'],columns=['date'])
df2 = pd.DataFrame(['emp_1','emp_2','emp_3'],columns=['id'])

# res
df1['key'] = 0
df2['key'] = 0

res = df1.merge(df2, how='outer').drop('key',axis= 1)

# print
print(res.sort_values('id'))

Консоль:

    date        id
0   2018-01-01  emp_1
3   2018-01-02  emp_1
6   2018-01-03  emp_1
9   2018-01-04  emp_1
1   2018-01-01  emp_2
4   2018-01-02  emp_2
7   2018-01-03  emp_2
10  2018-01-04  emp_2
2   2018-01-01  emp_3
5   2018-01-02  emp_3
8   2018-01-03  emp_3
11  2018-01-04  emp_3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...