簡體   English   中英

如何根據另一列的值更改 Pandas DataFrame 中的值

[英]How to change values in a Pandas DataFrame based on values of another columns

我有以下 DataFrame,其中包含一些數字,其中 Col1、Col2 和 Col3 中的值之和等於 Main 列中的值。

如果Cat列中的值等於Main列中的相應值,我該如何替換它們?

例如,以下 DataFrame:

      Main        Col1        Col2        Col3
0     100         50          50          0
1     200         0           200         0
2     30          20          5           5
3     500         0           0           500

將更改為:

      Main        Col1        Col2        Col3
0     100         50          50          0
1     200         0           EQUAL       0
2     30          20          5           5
3     500         0           0           EQUAL

您可以使用filter僅在“Col”列上應用(您也可以將切片與列表一起使用,請參閱替代方法),然后使用mask更改匹配值,最后update以更新 DataFrame:

df.update(df.filter(like='Col').mask(df.eq(df['Main'], axis=0), 'EQUAL'))

選擇:

cols = ['Col1', 'Col2', 'Col3']
df.update(df[cols].mask(df.eq(df['Main'], axis=0), 'EQUAL'))

輸出:

   Main  Col1   Col2   Col3
0   100    50     50      0
1   200     0  EQUAL      0
2    30    20      5      5
3   500     0      0  EQUAL

有幾種不同的方法可以做到這一點,我建議使用np.where()函數。

import numpy as np

df['Col1'] = np.where(df['Col1'] == df['Main'], 'EQUAL', df['Col1']
df['Col2'] = np.where(df['Col2'] == df['Main'], 'EQUAL', df['Col2']
df['Col3'] = np.where(df['Col3'] == df['Main'], 'EQUAL', df['Col3']

在此處閱讀有關np.where()的更多信息。

暫無
暫無

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

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