簡體   English   中英

用 pandas 中其他列中具有特定值的平均值替換列的值

[英]Replace the values of column with mean which has particular value in other column in pandas

我有一個數據框

df = pd.DataFrame([[10, -1], [20, 1], [30, -1],[40, 1], [50, 1], [60, 1], [70,-1], [80,-1], [90,-1], [100,1]], columns=['A', 'B'])

計算 A 列的平均值,B 列的整數值為 1 並賦值給 c,這里是c=54 我只想用 c 值替換列 A 中 B 列中具有 -1 值且值小於 c 的值。

預期 Output:

df = pd.DataFrame([[54, -1], [20, 1], [54, -1],[40, 1], [50, 1], [60, 1], [70,-1], [80,-1], [90,-1], [100,1]], columns=['A', 'B'])

怎么做?

首先在DataFrame.locboolean indexing中通過B==1獲取A的值,獲取平均值並通過僅比較B==-1值的平均值來設置A

mean = df.loc[df['B'].eq(1), 'A'].mean()
print (mean)
54.0

mask = df['A'].lt(mean) & df['B'].eq(-1)
df.loc[mask, 'A'] = mean
print (df)
     A  B
0   54 -1
1   20  1
2   54 -1
3   40  1
4   50  1
5   60  1
6   70 -1
7   80 -1
8   90 -1
9  100  1

暫無
暫無

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

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