Pandas 如何在Panda Dataframe中应用列表理解?

Pandas 如何在Panda Dataframe中应用列表理解?,pandas,list,list-comprehension,Pandas,List,List Comprehension,从值的列表中,我尝试识别任何一对总和超过10的连续值 a = [1,9,3,4,5] …所以我为循环写了一个 values = [] for i in range(len(a)-2): if sum(a[i:i+2]) >10: values += [a[i:i+2]] …我把它改写成一个列表 values = [a[i:i+2] for i in range(len(a)-2) if sum(a[i:i+2]) >10] 两者产生相同的输出: valu

从值的
列表
中,我尝试识别任何一对总和超过10的连续值

a = [1,9,3,4,5]
…所以我为循环写了一个

values = []
for i in range(len(a)-2):
    if sum(a[i:i+2]) >10:
        values += [a[i:i+2]]
…我把它改写成一个列表

values = [a[i:i+2] for i in range(len(a)-2) if sum(a[i:i+2]) >10]
两者产生相同的输出:

values = [[1,9], [9,3]]
我的问题是如何在数据框架中最好地应用上述列表理解

下面是示例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在a
df['X']
中,后者是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函数,并将您的列表理解放在其中

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']

中所述的输出。请为输入设置一个小样本数据帧,为所需输出设置一个。如果设置样本数据帧有问题,您可以查看。谢谢。添加了样本数据帧,该样本数据帧太大,无法使用。您能将其限制为六行,并带有确定性(非随机生成)值吗?另外,请发布您想要的样本结果。谢谢。顺便说一句,我需要在这里看到期望的结果,因为不清楚您希望新列如何适应原始数据帧。因为您的代码可以生成比原始列短的列表。