【发布时间】:2019-10-07 09:01:12
【问题描述】:
我正在尝试计算failures 之间的天数。我想知道该系列中的每一天自上次failure 以来经过的天数,其中failure = 1。可能有 1 到 1500 台设备。
例如,我希望我的数据框看起来像这样(请从第二个代码块中的 url 中提取数据。这只是较大数据框的一个简短示例。):
date device failure elapsed
10/01/2015 S1F0KYCR 1 0
10/07/2015 S1F0KYCR 1 7
10/08/2015 S1F0KYCR 0 0
10/09/2015 S1F0KYCR 0 0
10/17/2015 S1F0KYCR 1 11
10/31/2015 S1F0KYCR 0 0
10/01/2015 S8KLM011 1 0
10/02/2015 S8KLM011 1 2
10/07/2015 S8KLM011 0 0
10/09/2015 S8KLM011 0 0
10/11/2015 S8KLM011 0 0
10/21/2015 S8KLM011 1 20
示例代码:
编辑:请从下面的代码块中提取实际数据。上面的示例数据是一个简短的示例。谢谢。
url = "https://raw.githubusercontent.com/dsdaveh/device-failure-analysis/master/device_failure.csv"
df = pd.read_csv(url, encoding = "ISO-8859-1")
df = df.sort_values(by = ['date', 'device'], ascending = True) #Sort by date and device
df['date'] = pd.to_datetime(df['date'],format='%Y/%m/%d') #format date to datetime
这是我遇到障碍的地方。但是,新列应包含自上次failure 以来的天数,其中failure = 1。
test['date'] = 0
for i in test.index[1:]:
if not test['failure'][i]:
test['elapsed'][i] = test['elapsed'][i-1] + 1
我也试过
fails = df[df.failure==1]
fails.Dates = trues.index #need this because .diff() won't work on the index..
fails.Elapsed = trues.Dates.diff()
【问题讨论】:
标签: python pandas date datediff