![](/img/trans.png)
[英]Pandas replace all items in a row with NaN if one value is NaN
[英]Replace value with Nan if Nan in separate row - Pandas
我在df
中有一个包含许多字符串的列。 我打算用Nan
replace
一些字符串,但是列出的字符串太多了,可以用来replace
这些值。 我有一个单独的列,其中包含Nan
值,可用于实现此目的。
我想replace
Value
中的特定字符串。 想象一下,如果这个列包含 1000 个不同的字符串,我想用Nan
replace
500 。 用这些不需要的字符串创建一个列表并用它来替换Nan
效率低下
有一个单独的列(X)
显示可用于replace
Value 中的行的Nan
Value
。 因此,如果X
是Nan
,请将Value
中的行替换为Nan
。
有没有更简单的方法来做到这一点?
df = pd.DataFrame({
'Value' : ['B','A','X','Y','C','D','E','F','G','H','I'],
'X' : ['A','A','A','A',np.nan,'A','A','A',np.nan,'A','A'],
})
df = df.loc[df['X'].eq(np.nan), df['Value']] = np.nan
print(df)
预期 Output:
Value X
0 B A
1 A A
2 X A
3 Y A
4 Nan NaN
5 D A
6 E A
7 F A
8 NaN NaN
9 H A
10 I A
df=df.mask(df['X'].isna())
print(df)
Value X
0 B A
1 A A
2 X A
3 Y A
4 NaN NaN
5 D A
6 E A
7 F A
8 NaN NaN
9 H A
10 I A
您也可以将DataFrame.where
与Series.notna
一起使用
df=df.where(df['X'].notna())
我们可以做dropna
+ reindex
df=df.dropna().reindex(df.index)
Value X
0 B A
1 A A
2 X A
3 Y A
4 NaN NaN
5 D A
6 E A
7 F A
8 NaN NaN
9 H A
10 I A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.