我正在处理一些财务数据,我想创建一个列表列表,同时遍历df并满足特定条件
例如:df
25 Day 250 Day
Date
2001-12-07 1.4 1.5
2001-12-10 1.6 1.7
2001-12-11 1.8 1.2
2001-12-12 1.4 1.5
2001-12-13 1.4 1.6
我想遍历各行并在25天<250天时列出一个清单。这种情况是断断续续的,一次可能会持续几行。我最终希望使用这些数据在图形上绘制一些东西。
在上面的示例中,我应该得到以下内容: [[2001-12-07,2001-12-10],[2001-12-12,2001-12-13]]
我目前正在使用以下代码遍历行并获取所有值的列表,但是不知道如何将所有连续值放在单独的列表中
def get_Date():
global date_Buy
x = []
date_Buy = [[x]]
for i, value in master_Data.iterrows():
if value['25 Day'] < value['250 Day']:
x.append(i)
else:
continue
date_Buy.append(x)
get_Date()
基本上,我想在每次触发继续时都开始一个新列表
答案 0 :(得分:1)
您可以使用query
进行过滤,然后使用agg
将每一行转换为列表:
lst = df.query("Day_25 > Day_250").reset_index().agg(list, 1).tolist()
print(lst)
[['2019-03-31', 920, 2],
['2018-01-02', 920, 4],
['2018-01-02', 921, 600],
['2019-04-31', 921, 7],
['2018-01-02', 921, 8]]
答案 1 :(得分:0)
您想要这样的东西吗?
import pandas as pd
df = pd.DataFrame({'Date': ['2018-01-02', '2019-03-31', '2019-03-31', '2018-01-02', '2018-01-02', '2019-04-31',
'2018-01-02'],
'Day_25': [1, 920, 920, 920, 921, 921, 921],
'Day_250': [100, 2, 3000, 4, 600, 7, 8]})
index_greater=df[df.Day_25 > df.Day_250].index