【问题标题】:Taking average between two values in pandas Data frame在熊猫数据框中取两个值的平均值
【发布时间】:2021-08-20 14:06:38
【问题描述】:

假设我有以下数据框,

A   B   C   D   E
0   1.625627    8.910396    9.171640    1.980580    8.429633
1   7.228290    6.431085    5.399684    8.442247    2.609367
2   NaN         NaN         NaN         NaN         NaN
3   2.533768    3.877104    8.199575    5.138173    7.248905
4   0.351828    1.233081    1.004183    6.497358    0.76487

我想遍历每一行以将 NaN 值替换为上限值和下限值之间的平均值。

我尝试使用以下代码,但没有任何结果:

for i, row in df.iterrows():
    if i in row[:] > 1.0:
        print(i)

【问题讨论】:

    标签: python pandas dataframe loops


    【解决方案1】:

    使用fillna()shift()shift(1) 会给你更高的值(因为它向下移动数据框),shift(-1) 会给你更低的值(因为它向上移动数据框)。

    df = df.fillna((df.shift(1)+df.shift(-1))/2)
    

    df.fillna((df.shift(1)+df.shift(-1))/2, inplace = True)
    

    【讨论】:

    • 不需要遍历列,pandas会根据列标题自动对齐。
    • df.fillna((df.shift(-1) + df.shift()) / 2)
    • 哦,是的,已编辑答案:)
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2021-03-10
    • 2019-04-16
    • 2021-09-25
    • 2020-04-26
    • 2018-10-26
    • 2020-08-09
    • 2018-02-01
    相关资源
    最近更新 更多