根据条件从数据框创建列表列表

时间:2020-08-03 03:54:58

标签: python pandas

我正在处理一些财务数据,我想创建一个列表列表,同时遍历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()

基本上,我想在每次触发继续时都开始一个新列表

2 个答案:

答案 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