【发布时间】:2019-11-22 10:16:35
【问题描述】:
我有两个数据框,如下所示:
DF1:
x_id y_id
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
DF2:
x_id y_id
1 1
2 1
3 1
4 2
5 2
6 2
1 3
3 3
: :
: :
3 y(i)
所以,我想在循环的每次迭代中将 DF2 中的 y_id 合并/插入到 DF1 中的 y_id 中。
到目前为止我所拥有的:
count = df2['y_id'].unique()
for i in count:
new_df = df1.merge(df2['y_id']==i], how='inner', left_on='x_id', right_on='x_id')
虽然这会为循环的每次迭代创建一个新的数据框,但我认为应该有更好的方法来做到这一点。
我希望我的最终数据框看起来像:
DF3:
x_id y_id
1 3
2 1
3 y(i)
4 2
5 2
6 2
基本上我想要做的是按 y_id 对 DF2 进行分组,并将它们按排序顺序合并。所以我们可以在 DF2 中看到值 1 和 3 的 y_id = 1,然后在列的更下方,它们的 y_id = 3。由于 3 >1,我想使用这个值(即最大或最近的值,如果我们是处理日期等)
我想做的类似于 SQL 中的更新语句,我们更新列并设置 row = y_id,取最近的值。
希望我已经充分解释了,任何问题都可以问。
谢谢
【问题讨论】:
标签: python pandas merge group-by