Pandas 根据条件将列从一个df复制到另一个df
我有一种情况,在我的数据帧中有3列x,y,point,我正在从另一个df复制id表,但问题是所有列中都有不同的值。我想用point col复制id列,使点1,2,3具有相同的id。 df是 x y点 76.32 42.58 1 86.34 90.02 2 687.12 125.327 1 65.28 87.11 2 963.1 854.2 3 来自df1的id列 M123 第478页 Q145 J768 D476如果每个组都以1开头,则可以通过字典使用,则每个组都以1创建,并与和进行比较: 详情: 如有必要,检查各组之间的差异:Pandas 根据条件将列从一个df复制到另一个df,pandas,postgresql,Pandas,Postgresql,我有一种情况,在我的数据帧中有3列x,y,point,我正在从另一个df复制id表,但问题是所有列中都有不同的值。我想用point col复制id列,使点1,2,3具有相同的id。 df是 x y点 76.32 42.58 1 86.34 90.02 2 687.12 125.327 1 65.28 87.11 2 963.1 854.2
df['id'] = df['point'].diff().lt(0).cumsum().map(dict(enumerate(df1['id'])))
print (df)
x y point id
0 76.32 42.580 1 111
1 86.34 90.020 2 111
2 687.12 125.327 1 222
3 65.28 87.110 2 222
4 963.10 854.200 3 222
5 85.23 96.230 1 333
print (df['point'].diff().lt(0).cumsum())
0 0
1 0
2 1
3 1
4 1
5 2
Name: point, dtype: int32
使用key cols左连接是合适的解决方案。df['point']=df['id'].eq1.cumsum.astypestr.mul3?@user19-原始数据帧是df,新数据帧是df1,我的答案中有列id。有一些问题?@user19-你能像上面的评论那样更改问题中的数据吗?@user19-我的答案中的解决方案对更改后的数据非常有效well@user19-什么是dictenumeratedf1['id'].head,1?@user19-首先尝试更改.mapdictenumerateAB_U1;+df1['id'].astypestr,1到.mapdictenumerateAB_U1;+df1['id'].astypestr.astypestr,1,如果不工作,请尝试.mapdictenumerateAB_U1;+df1['id'].astype'Int64'。astypestr,1-在0.25中最后一次工作+
print (df['point'].eq(1).cumsum())
0 1
1 1
2 2
3 2
4 2
5 3
Name: point, dtype: int32
df['id'] = df['point'].diff().lt(0).cumsum().map(dict(enumerate(df1['id'])))
print (df)
x y point id
0 76.32 42.580 1 111
1 86.34 90.020 2 111
2 687.12 125.327 1 222
3 65.28 87.110 2 222
4 963.10 854.200 3 222
5 85.23 96.230 1 333
print (df['point'].diff().lt(0).cumsum())
0 0
1 0
2 1
3 1
4 1
5 2
Name: point, dtype: int32