好的,以下是在原有代码基础上添加您提供的代码的示例:
```python
def calculate_composite_index(data, weights):
t = data.index
composite_index = []
for i in range(len(t)):
# Add debug information
print("Current index:", i)
print("Length of composite_index:", len(composite_index))
print("Length of t:", len(t))
print("Current composite_index value:", composite_index[i])
print("Current t value:", t[i])
if i < len(weights):
weight = weights[i]
else:
weight = weights[-1]
composite_index.append(np.average(data.iloc[:i+1], axis=0, weights=weight))
# Find failure time
N = len(composite_index)
failure_time = t[-1]
found_negative = False
for i in range(N):
if composite_index[i] < 0:
failure_time = t[i]
found_negative = True
break
if not found_negative:
failure_time = t[-1]
return pd.DataFrame(composite_index, columns=data.columns, index=t), failure_time
```
在这个示例中,我们添加了寻找失效时间的代码。首先,我们定义了 `N` 变量来存储 `composite_index` 数组的长度。然后,我们初始化 `failure_time` 为 `t[-1]`,即最后一个时间戳。接着,我们遍历 `composite_index` 数组,如果发现某个元素小于 0,则将 `failure_time` 更新为对应的时间戳,并设置 `found_negative` 为 True。如果遍历完整个数组后仍然没有找到小于 0 的元素,则将 `failure_time` 更新为最后一个时间戳。
最后,我们将 `composite_index` 和 `failure_time` 一起返回。