根据 where 条件替换 pandas dataframe 中的值
Replace value in pandas dataframe based on where condition
我使用以下代码创建了一个名为 df
的数据框:
import numpy as np
import pandas as pd
# initialize data of lists.
data = {'Feature1':[1,2,-9999999,4,5],
'Age':[20, 21, 19, 18,34,]}
# Create DataFrame
df = pd.DataFrame(data)
print(df)
数据框如下所示:
Feature1 Age
0 1 20
1 2 21
2 -9999999 19
3 4 18
4 5 34
每当 Feature1
列中出现 -9999999
的值时,我都需要将其替换为 Age
列中对应的值。所以,输出数据框看起来是这样的:
Feature1 Age
0 1 20
1 2 21
2 19 19
3 4 18
4 5 34
请记住,我使用的实际数据框有 20 万条记录(上面显示的只是一个示例)。
如何在 pandas 中执行此操作?
您可以使用 np.where
或 Series.mask
df['Feature1'] = df['Feature1'].mask(df['Feature1'].eq(-9999999), df['Age'])
# or
df['Feature1'] = np.where(df['Feature1'].eq(-9999999), df['Age'], df['Feature1'])
我使用以下代码创建了一个名为 df
的数据框:
import numpy as np
import pandas as pd
# initialize data of lists.
data = {'Feature1':[1,2,-9999999,4,5],
'Age':[20, 21, 19, 18,34,]}
# Create DataFrame
df = pd.DataFrame(data)
print(df)
数据框如下所示:
Feature1 Age
0 1 20
1 2 21
2 -9999999 19
3 4 18
4 5 34
每当 Feature1
列中出现 -9999999
的值时,我都需要将其替换为 Age
列中对应的值。所以,输出数据框看起来是这样的:
Feature1 Age
0 1 20
1 2 21
2 19 19
3 4 18
4 5 34
请记住,我使用的实际数据框有 20 万条记录(上面显示的只是一个示例)。
如何在 pandas 中执行此操作?
您可以使用 np.where
或 Series.mask
df['Feature1'] = df['Feature1'].mask(df['Feature1'].eq(-9999999), df['Age'])
# or
df['Feature1'] = np.where(df['Feature1'].eq(-9999999), df['Age'], df['Feature1'])