我在以下结构中有一个DataFrame
:
df
:
12 14 15 16 18 29 31 32 33 36 46 48 49 50 52
0 0 1950 136 -25 -116 1 1664 372 -17 NaN 1 2950 449 -24 NaN
1 0 1635 373 -21 -115 0 1639 261 -24 -116 1 2950 160 -24 NaN
1 0 1635 373 -21 -115 1 1639 261 -24 NaN 1 2950 160 -24 -111
列12
,29
和46
中的我有指标0
或1
我将这个指数列表命名为:
col = [12,29,46]
我的目标是在Python
中找到正确的语法来编写代码:
for i in col:
check df[i]
while df[i] == 0 and df [i+6] is not NaN:
select df[i+2] , df[i+3] , df[i+4]
while df[i] == 1 and df [i+6] is not NaN:
select df[i+2] , df[i+3] , df[i+4]
if df[i] == 1 and all df[i+6] are NaN:
Select the first one.
答案 0 :(得分:0)
在不太了解熊猫数据帧的细节的情况下,我会说你需要一般地解决这个问题。如果你想创建自己的实现,你应该创建一个过滤函数,你传递两个参数:你的数据帧和谓词函数(你应该写的函数,它将返回True或False)在一行数据帧上。)
类似的东西:
def my_test_function(row):
....
# result must be boolean (or something equivalent)
return result
def filter_dataframe(df, predicate):
return [row for row in df.rows if predicate(row)]
rows = filter_dataframe(df, my_test_function)
因此,您必须根据自己的需要撰写my_test_function
。
另请注意,Panda提供了一整套过滤设施(see in particular this page)。但如果它不符合您的需求,上面的模式可能是一个优雅的解决方案。