如何在Panda Dataframe中应用列表推导? [英] How to apply a list comprehension in Panda Dataframe?

查看:61
本文介绍了如何在Panda Dataframe中应用列表推导?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从值的列表中,我尝试确定总和超过10的任何顺序的值对

From a list of values, I try to identify any sequential pair of values whose sum exceeds 10

a = [1,9,3,4,5]

...所以我写了一个 for 循环...

...so I wrote a for loop...

values = []
for i in range(len(a)-2):
    if sum(a[i:i+2]) >10:
        values += [a[i:i+2]]

...我将其重写为列表理解...

...which I rewritten as a list comprehension...

values = [a[i:i+2] for i in range(len(a)-2) if sum(a[i:i+2]) >10]

两者都产生相同的输出:

Both produce same output:

values = [[1,9], [9,3]]

我的问题是如何最好地将上述列表理解应用于DataFrame.

My question is how best may I apply the above list comprehension in a DataFrame.

这是示例5行数据框

import pandas as pd
df = pd.DataFrame({'A': [1,1,1,1,0], 
                   'B': [9,8,3,2,2],
                   'C': [3,3,3,10,3],
                   'E': [4,4,4,4,4],
                   'F': [5,5,5,5,5]})
df['X'] = df.values.tolist()

其中:-a在 df ['X'] 中,这是值列表A-F

where: - a is within a df['X'] which is a list of values Columns A - F

df['X'] = [[1,9,3,4,5],[1,8,3,4,5],[1,3,3,4,5],[1,2,10,4,5],[0,2,3,4,5]]

  • ,列表理解的结果将存储在新列 df ['X1]
  • 所需的输出是:

    df['X1'] = [[[1,9], [9,3]],[[8,3]],[[NaN]],[[2,10],[10,4]],[[NaN]]]
    

    谢谢.

    推荐答案

    你可以使用 pandas apply 函数,并把你的列表推导放在里面.

    You could use pandas apply function, and put your list comprehension in it.

    df = pd.DataFrame({'A': [1,1,1,1,0], 
                       'B': [9,8,3,2,2],
                       'C': [3,3,3,10,3],
                       'E': [4,4,4,4,4],
                       'F': [5,5,5,5,5]})
    
    df['x'] = df.apply(lambda a: [a[i:i+2] for i in range(len(a)-2) if sum(a[i:i+2]) >= 10], axis=1)
    
    #Note the axis parameters tells if you want to apply this function by rows or by columns, axis = 1 applies the function to each row.
    

    这将给出df ['X1']

    This will give the output as stated in df['X1']

    这篇关于如何在Panda Dataframe中应用列表推导?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆