温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Fill in zeros from data of past week (168 indexes prior) in a pandas dataframe
dataframe pandas python data-science missing-data

python - 在 pandas 数据框中填写上周(之前为168个索引)的数据中的零

发布于 2020-03-27 15:54:11

我有用电量数据。在电源中断期间,数据为“ 0”。我想用过去一周中相同时间的数据替换那些0。它在数据集中的前或后是168个索引。

在下面的代码中,我保存了所有零的索引。运行一个循环,该循环会将位于数据集中前168个索引的值放在当前索引处。

Index_Zero = data[data["Total"]==0].index.to_list() #Output = list of indexes where all the zeros lie

print(Index_Zero[0]) #Output = 2

for i in Index_Zero:
    data.loc[(Index_Zero[i]), 'Total']=data.loc[(Index_Zero[i+168]), 'Total']

另外,如果我打印

data.loc[(Index_Zero[0]), 'Total']=data.loc[(Index_Zero[2]), 'Total']
print(data.loc[(Index_Zero[0]), 'Total'])
Output: 0.0

数据集:

           Date         Time     Total
0     23-Jan-2019  12:00:00 AM  18343.00
1     23-Jan-2019  01:00:00 AM  18188.00
2     23-Jan-2019  02:00:00 AM      0.00
3     23-Jan-2019  03:00:00 AM  23394.00
4     23-Jan-2019  04:00:00 AM  20037.00

查看更多

查看更多

提问者
AyyBeeShafi
被浏览
18
AyyBeeShafi 2020-02-05 18:54

问题在for循环范围内。它超出了列表的范围。

Index_Zero = data[data["Total"]==0].index.to_list()
for items in range(0, len(Index_Zero)-1):
    data.loc[(Index_Zero[items]), 'Total'] = data.loc[(items+168), 'Total']