我希望你過得很好,并有一個美好的年終。首先,請原諒我的英語,因為我不是母語人士。
我的問題是在 python 上有一個 Dataframe(例如 30 行和 6 列),我嘗試根據每行值的平均值逐個單元格過濾(例如:如果它的值低于它的行的平均值,我保留它,否則我將其替換為 0),讓我感到困難的是閾值是動態的,不幸的是我無法應用我在其他情況下使用的 applymap 方法。
Data = {
'2021' : [12, 12, 14],
'2022' : [10, 20, 25],
'2023' : [100, 10, 35]}
df = pd.DataFrame.from_dict(Data, orient='index')
df['mean'] = df.mean(axis=1)
對于這種情況,我想為第一行替換 14,為第二行替換 20 和 25,為最后一行替換 100,因為它們高于其行值的平均值。
uj5u.com熱心網友回復:
如果需要DataFrame.mean使用替換值DataFrame.clip:
df1 = df.clip(upper=df.mean(axis=1), axis=0)
print (df1)
0 1 2
2021 12.000000 12.000000 12.666667
2022 10.000000 18.333333 18.333333
2023 48.333333 10.000000 35.000000
如果需要0使用替換DataFrame.mask:
df2 = df.mask(df.gt(df.mean(axis=1), axis=0), 0)
print (df2)
0 1 2
2021 12 12 0
2022 10 0 0
2023 0 10 35
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/389511.html
上一篇:在Pandas中折疊調查資料
