我的数据框很大,我需要将第一列中的第一个条目与第二列中的第一个条目进行比较。然后是第一列中的第一项到第三列中的第一项,依此类推。基本上,我想查看两个值是否大于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 :(得分:1)
每轴= 1列使用DataFrame.rolling
,按条件比较,并通过True
测试两者中是否至少有一个any
,或者如果有必要则测试两者是否均为True
将更改any
更改为all
。
第一列填充了NaN
,因此(我希望)对于最后一列NaN
是DataFrame.shift
,将它们替换为DataFrame.fillna
并强制转换为{{1 }}:
boolean
答案 1 :(得分:0)
看看这个建议可能对您有用。
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