[英]How do i replace the values of a dataframe on a condition
我有一個超過50列的pandas數據框。 除第一列外的所有數據均為浮點型。 我想用100替換任何大於5.75的值。有人可以建議任何函數執行相同的操作。
替換功能不起作用,因為to_value只能使用“ =”功能,而不能使用大於功能。
這可以使用
df['ColumnName'] = np.where(df['ColumnName'] > 5.75, 100, df['First Season'])
您可以創建一個自定義函數並將其傳遞以應用:
import pandas as pd
import random
df = pd.DataFrame({'col_name': [random.randint(0,10) for x in range(100)]})
def f(x):
if x >= 5.75:
return 100
return x
df['modified'] = df['col_name'].apply(f)
print(df.head())
col_name modified
0 2 2
1 5 5
2 7 100
3 1 1
4 9 100
import numpy as np
import pandas as pd
#Create df
np.random.seed(0)
df = pd.DataFrame(2*np.random.randn(100,50))
for col_name in df.columns[1:]: #Skip first column
df.loc[:,col_name][df.loc[:,col_name] > 5.75] = 100
如果您有數據框:
import pandas as pd
import random
df = pd.DataFrame({'first_column': [random.uniform(5,6) for x in range(10)]})
print(df)
給我:
first_column
0 5.620439
1 5.640604
2 5.286608
3 5.642898
4 5.742910
5 5.096862
6 5.360492
7 5.923234
8 5.489964
9 5.127154
然后檢查該值是否大於5.75:
df[df > 5.75] = 100
print(df)
給我:
first_column
0 5.620439
1 5.640604
2 5.286608
3 5.642898
4 5.742910
5 5.096862
6 5.360492
7 100.000000
8 5.489964
9 5.127154
np.where(df.value > 5.75, 100, df.value)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.