簡體   English   中英

根據條件在多列上用 nan 替換值

[英]Replace values with nan on multiple columns based on condition

我的df包含許多列。 我想根據條件僅用NaN替換 A 列和 B 列中的所有值。 此外,我想將相同的條件應用於除 C 列和 D 列之外的另一個 df。到目前為止,我的搜索返回適用於單個列的方法。

到目前為止我的嘗試。
僅在 A 列和 B 列上:

df[df.loc[:, df.columns['A','B']] < (0.1 * 500)] = np.nan

除了 A 列和 B 列:

df[df.loc[:, df.columns != ['A','B']] < (0.1 * 500)] = np.nan

這些代碼不起作用。

我認為你需要DataFrame.mask

df = pd.DataFrame({
         'A':[4,5,4,5,5,4],
         'B':[7,8,9,4,2,3],
         'C':[1,3,5,7,1,0],
         'D':[5,3,6,9,2,4],

}) * 10

c = ['A','B']
df[c] = df[c].mask(df[c] < (0.1 * 500))
print (df)
      A     B   C   D
0   NaN  70.0  10  50
1  50.0  80.0  30  30
2   NaN  90.0  50  60
3  50.0   NaN  70  90
4  50.0   NaN  10  20
5   NaN   NaN   0  40

c1 = df.columns.difference(c)
df[c1] = df[c1].mask(df[c1] < (0.1 * 500))

print (df)
      A     B     C     D
0   NaN  70.0   NaN  50.0
1  50.0  80.0   NaN   NaN
2   NaN  90.0  50.0  60.0
3  50.0   NaN  70.0  90.0
4  50.0   NaN   NaN   NaN
5   NaN   NaN   NaN   NaN
# Initalize columns to modify
columns

# Get row indexes where condition is met
indexes=np.where(condition is True)

# Then replace
for col in pest_cols_to_NA:
    tuta_df[col][indexes]=np.nan

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM