如何在Panda Dataframe中应用列表推导? [英] How to apply a list comprehension in Panda Dataframe?
本文介绍了如何在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屋!
查看全文