Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代df以比较值_Python_Pandas_Dataframe - Fatal编程技术网

Python 迭代df以比较值

Python 迭代df以比较值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个大的数据框,我需要比较第一列中的第一个条目和第二列中的第一个条目。然后从第一列的第一个条目到第三列的第一个条目,等等。基本上我想看看这两个值是否大于0,然后做些什么。有没有一种方法可以使用熊猫数据帧来实现这一点 0 22 0 44 5 6 1 12 3 56 0 0 2 0 0 1 0 0 3 1 2 0 0 0 所以我想看看22和0是否都大于0。然后,如果22和44都大于0。如果22和5都大于0。如果22和6都大于0。如果12和3都大于0。然后,如果12和56都大于0

我有一个大的数据框,我需要比较第一列中的第一个条目和第二列中的第一个条目。然后从第一列的第一个条目到第三列的第一个条目,等等。基本上我想看看这两个值是否大于0,然后做些什么。有没有一种方法可以使用熊猫数据帧来实现这一点

0  22 0 44 5 6
1  12 3 56 0 0
2  0  0 1  0 0
3  1  2 0  0 0
所以我想看看22和0是否都大于0。然后,如果22和44都大于0。如果22和5都大于0。如果22和6都大于0。如果12和3都大于0。然后,如果12和56都大于0。。。等等如果一对元素都大于0,那么我的代码将执行其他操作

我假设有一种简单的方法可以迭代我刚刚缺少的行和列。

使用每轴=1-列,按条件进行匹配,并通过
any
测试这两个行中是否至少有一个
True
,或者如果两个行和列都是
True
则使用change
any
all

第一列是填充的
NaN
s,因此(我希望)最后一列
NaN
s是必需的,将它们替换为并转换为
boolean

print (df)
    a  b   c  d  e
0  22  0  44  5  6
1  12  3  56  0  0
2   0  0   1  0  0
3   1  2   0  0  0


def f(x):
    print (x)
    mask = x > 0
    print (mask)
    return mask.any()


df = df.rolling(2, axis=1).apply(f, raw=True).shift(-1, axis=1).fillna(0).astype(bool)
print (df)
       a     b      c      d      e
0   True  True   True   True  False
1   True  True   True  False  False
2  False  True   True  False  False
3   True  True  False  False  False

看看这个建议,这可能对你有用

import pandas as pd
data = [[22, 0, 44, 5, 6], [12, 3, 56, 0, 0], [0, 0, 1, 0, 0], [1, 2, 0, 0, 0]]
df = pd.DataFrame(data)

# we ignore the first column since we will use it to compare
columns = df.columns[1:]

# new dataframe for convenience purposes
new_df = df.copy(deep=True)

# iterate through each column and compare the 1st and the iterating column and if both above zero make True or False
for i in columns:
    new_df.iloc[:, i] = (df.iloc[:, 0] > 0) & (new_df.iloc[:, i] > 0)

# check results
new_df

对不起,我觉得我原来的问题不清楚。我只是为了(希望)更清晰地编辑了它。我认为,如果不同列中的元素>第一列中的元素,那么您提供的代码将进行比较。我需要看看这两个值是否都大于0。