首页 > 解决方案 > 熊猫更正上一行

问题描述

我有这样的数据框。

import pandas as pd

#create dataframe
df= pd.DataFrame({"Date":range(0,22),
                  "Country":["USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA",],
                  "Number":[0,0,0,0,0,1,1,3,5,6,4,6,7,8,7,10,25,50,75,60,45,100]
                  "Number is Corrected":[0,0,0,0,0,1,1,3,5,6,6,6,7,7,7,10,25,50,50,60,60,100]})

但是这个数据框有问题。有些数字是错误的。

前一个数字必须小于下一个数字(6, 4 ,6,,7, 8 ,7...50,75, 60 , 45 ,100)

我不使用df.sort,因为它不是关于排序,而是关于更正。

编辑:我在“数字已更正”列中添加了更正的数字。

标签: pythonpandasdataframe

解决方案


从你的“数字更正”列表中猜测,你可能会使用这个:

import pandas as pd

#create dataframe
df= pd.DataFrame({"Date":range(0,22),
                  "Country":["USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA","USA",],
                  "Number":[0,0,0,0,0,1,1,3,5,6,4,6,7,8,7,10,25,50,75,60,45,100]})
#                  "Number is Corrected":[0,0,0,0,0,1,1,3,5,6,6,6,7,7,7,10,25,50,50,60,60,100]})

def correction():
    df['Number is Corrected'] = df['Number']
    cache = 0
    for num, content in enumerate(df['Number is Corrected'], start=0):
        if(df['Number is Corrected'][num] < cache):
            df['Number is Corrected'][num] = cache
        else:
            cache = df['Number is Corrected'][num]
    print(df)

if __name__ == "__main__":
    correction()

但有一些不一致之处,比如你和耶斯瑞尔的谈话。事件。你需要更新代码的逻辑,如果它变得更清楚,你想要什么输出。祝你好运。


推荐阅读