我已经创建了一个数据透视表数据框架,它有一列名称和4列int64。
issuer = pos.pivot_table(index="Issuer", columns="AssetType",
values="MarketValue", aggfunc=np.sum)
我需要找到任何数字组合都有正整数和负整数的所有行。
我尝试了两种方法来解决这个问题。首先是定义product_all并在遍历每行/组合时使用itertools.product的漫长方法。
def product_all(row):
list_iter = list(row)
for x, y in itertools.product(list_iter, repeat=2):
if x*y >= 0:
return True
else:
return False
另一种方法是使用.any()并查找>和< 0的值。
issuer = issuer[((issuer[col] > 0).any()) & ((issuer[col] < 0).any())]
下面是我的df的head()
AssetType Bond CDS Equity Loan
Issuer
Name1 0.0 -0.0 0.0 6900238.93
Name2 0.0 -0.0 0.0 12130000.00
Name3 0.0 -0.0 0.0 8501753.71
Name4 0.0 -0.0 0.0 25255509.41
Name5 0.0 -0.0 0.0 21746971.29
当我运行这两个程序时,我得到相同的错误: pandas.core.indexing.IndexingError:作为索引器提供的不可对齐的布尔系列(布尔系列的索引和索引对象的索引不匹配
当我打印x,y时,我得到了我所期望的组合。不确定我的代码在哪里崩溃了。
发布于 2019-08-29 21:22:06
您需要在axis=1
中使用any
。
尝试:
issuer[issuer.gt(0).any(axis=1) & issuer.lt(0).any(axis=1)]
https://stackoverflow.com/questions/57717641
复制