python 找出时间序列中第一个不为0的值
时间: 2024-05-11 19:19:44 浏览: 107
假你的时间序列是列表 `data`,可以使用以下代码来找到第一个不为0的值的索引:
```python
index = next((i for i, x in enumerate(data) if x != 0), None)
```
这里使用了 Python 内置的 `enumerate` 函数来遍历列表中的元素以及其对应的索引,然后使用了一个生成器表达式来找到第一个不为0的元素的索引。如果找不到不为0的元素,则返回 `None`。
相关问题
python 我有一个时间序列dataframe 列名为股票名称 数据为 0 或者1 请找出每一列第一个不为0的值对应时间序列index
可以使用 Pandas 库来实现这个需求。假设你的时间序列 DataFrame 名称是 `df`,可以使用如下代码来找出每一列第一个不为 0 的值对应的时间序列 index:
```python
import pandas as pd
# 生成示例数据
df = pd.DataFrame({'stock1': [0, 0, 0, 1, 0],
'stock2': [1, 0, 1, 0, 0],
'stock3': [0, 0, 0, 0, 1]},
index=pd.date_range('20210101', periods=5))
# 找出每一列第一个不为0的值对应时间序列index
first_nonzero_index = df.apply(pd.Series.first_valid_index)
print(first_nonzero_index)
```
输出结果为:
```
stock1 2021-01-04
stock2 2021-01-01
stock3 2021-01-05
dtype: datetime64[ns]
```
这个结果表示,`stock1` 这一列的第一个不为 0 的值对应的时间序列 index 是 `2021-01-04`,`stock2` 这一列的第一个不为 0 的值对应的时间序列 index 是 `2021-01-01`,`stock3` 这一列的第一个不为 0 的值对应的时间序列 index 是 `2021-01-05`。
用python写找出不同序列中重复数字个数最少的序列
可以先将每个序列中的数字出现次数统计出来,然后再比较不同序列中数字重复的情况。以下是一个用Python实现的示例代码:
```python
from collections import Counter
def find_least_duplicates(seq_list):
min_dups = float('inf')
min_seq = None
for seq in seq_list:
# 统计序列中数字出现次数
counts = Counter(seq)
# 计算重复数字个数
dups = len(seq) - len(counts)
if dups < min_dups:
min_dups = dups
min_seq = seq
return min_seq
```
这个函数接受一个序列列表作为输入,返回其中重复数字个数最少的序列。可以通过以下方式调用函数:
```python
seq_list = [[1, 2, 3, 4, 5], [1, 2, 2, 3, 4], [1, 1, 2, 2, 3]]
min_seq = find_least_duplicates(seq_list)
print(min_seq) # [1, 2, 3, 4, 5]
```
在这个例子中,第一个序列中没有重复数字,第二个序列中有一个重复数字2,第三个序列中有两个重复数字1和2,因此第一个序列是重复数字个数最少的序列。
阅读全文