[英]Python Pandas - filter pandas dataframe to get rows with minimum values in one column for each unique value in another column
[英]Pandas - Filling each rows of one Dataframe with value from another Dataframe
我有两个数据框,一个带有日期集(df1),另一个带有emp_ids(df2)。 我正在尝试创建一个新的数据框,以便将df2中的每个emp_id标记为df1中的每个日期。
以下是我的数据框的外观
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])
您想要做的就是称为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.