如何在条件中将一列值替换为另一列值[重复]
Posted
技术标签:
【中文标题】如何在条件中将一列值替换为另一列值[重复]【英文标题】:How to replace one col values with another col values in conditions [duplicate] 【发布时间】:2019-04-20 12:16:31 【问题描述】:我有一个这样的熊猫数据框
df.head(10)
7 RT (min) Area (Ab*s) Quality patch similarity
8 10.167 23278313 64 NaN NaN
9 10.167 23278313 47 NaN NaN
10 10.167 23278313 38 NaN NaN
28 10.333 3407159 49 10.167 0.983935
29 10.333 3407159 22 10.167 0.983935
30 10.333 3407159 16 10.167 0.983935
48 10.390 3299202 38 10.333 0.994514
49 10.390 3299202 35 10.333 0.994514
50 10.390 3299202 32 10.333 0.994514
68 10.516 2015786 50 10.390 0.988018
我想要df['similarity']>0.99
,然后是df['RT (min)'] = df['patch']
。
例如,df 应该是这样的:
7 RT (min) Area (Ab*s) Quality patch similarity
8 10.167 23278313 64 NaN NaN
9 10.167 23278313 47 NaN NaN
10 10.167 23278313 38 NaN NaN
28 10.333 3407159 49 10.167 0.983935
29 10.333 3407159 22 10.167 0.983935
30 10.333 3407159 16 10.167 0.983935
48 10.333 3299202 38 10.333 0.994514
49 10.333 3299202 35 10.333 0.994514
50 10.333 3299202 32 10.333 0.994514
68 10.516 2015786 50 10.390 0.988018
RT (min) 中的 48,49,50 行替换为补丁中的 48,49,50 行
我试过了
p = df[df['similarity']>0.99].index.tolist()
df['RT (min)'][p] =df['patch'][p]
当我得到错误时
InvalidIndexError: Reindexing only valid with uniquely valued Index objects
我不知道怎么解决。
【问题讨论】:
【参考方案1】:类似这样的:
mask = df['similarity'] > 0.99
df.loc[mask, 'RT'] = df['patch']
举个例子:
df = pd.DataFrame("RT":[10.1,10.2,10.4],"patch":[float("NaN"),10.3,10.3],"similarity":[float("NaN"),0.9,0.998])
制作:
RT patch similarity
0 10.1 NaN NaN
1 10.2 10.3 0.900
2 10.4 10.3 0.998
创建一个掩码并用于分配来自patch
的值
mask = df['similarity'] > 0.99
df.loc[mask, 'RT'] = df['patch']
结果:
RT patch similarity
0 10.1 NaN NaN
1 10.2 10.3 0.900
2 10.3 10.3 0.998
【讨论】:
你完美解决了我的问题,谢谢你的详细解答 @X.tang 很好 - 请将答案标记为已接受。【参考方案2】:pd.Series.mask
您可以按如下方式分配:
df['RT'] = df['RT'].mask(df['similarity'] > 0.99, df['patch'])
【讨论】:
***.com/q/21608228 ?以上是关于如何在条件中将一列值替换为另一列值[重复]的主要内容,如果未能解决你的问题,请参考以下文章