动态调整if语句的大小

时间:2018-01-30 15:32:17

标签: python python-3.x pandas numpy

我想通过使用列表检查for循环内的数据帧的列,然后执行一些操作来更改下一次迭代的列表内容。是否可以动态调整此处描述的if语句。

示例:

df = 
a|b|c|d|e
1|2|3|4|5
6|7|8|9|0

check_list = ['a']

for i in range(10):
    if check_list in df.columns:
        do x

        // variable check_list is now equal to ['a','b']

所以在第一次迭代中,列表只包含' a'在第二次迭代中,它包含' a'和' b'然后在进一步的迭代中它将进一步改变。我希望这能充分解释我的问题。

1 个答案:

答案 0 :(得分:0)

可能有助于回答您问题的工作代码:

def add_column(l, all_columns):
    """ Example of a function for adding new columns to the check list"""
    if len(l) < len(all_columns):
        return l + [all_columns[len(l)]]
    else:
        return l

all_columns = 'abcde'

df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 0]], columns=list(all_columns))
print(df)

check_list = ['a']    

for i in range(10):

    # issuperset() seems to be the best way to check that the list includes only column names from the dataframe  
    if set(df.columns).issuperset(set(check_list)):
        check_list = add_column(check_list, all_columns) 
        print("checking list:", check_list)

        # do other stuff

输出:

   a  b  c  d  e
0  1  2  3  4  5
1  6  7  8  9  0
checking list: ['a', 'b']
checking list: ['a', 'b', 'c']
checking list: ['a', 'b', 'c', 'd']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']
checking list: ['a', 'b', 'c', 'd', 'e']

我希望这会有所帮助。