2024-03-29 08:41:32 发布
网友
简单地说,我想这样做:
df.s1.map["a":df.s2+1, "b":df.s2-1]
但是,它不会工作,因为df.s2不是常量
df.s2
如何将s1映射到df.s2+1而s1='a',将s1映射到df.s2-1而s1='b'
s1
df.s2+1
s1='a'
df.s2-1
s1='b'
您可以使用apply使用lambda和axis = 1,即
apply
lambda
axis = 1
如果你有一个数据帧
df = pd.DataFrame({'s1':['a','b','a','a','b'],'s2':[1,3,5,2,4]}) df['s3'] = df.apply(lambda x : x['s2']+1 if x['s1'] == 'a' else x['s2']-1 ,axis=1 )
或者从字典中提取d['s2']common,然后在映射后将其添加到末尾
df['s3'] = df.s1.map({'a':1,'b':-1})+df['s2']
输出:
s1 s2 s3 0 a 1 2 1 b 3 2 2 a 5 6 3 a 2 3 4 b 4 3 In [364]:
您可以使用
apply
使用lambda
和axis = 1
,即如果你有一个数据帧
或者从字典中提取d['s2']common,然后在映射后将其添加到末尾
输出:
输出:
相关问题 更多 >
编程相关推荐