![](/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.