我创建了一个数据透视表数据框,该数据框具有一列名称和4列int64。
issuer = pos.pivot_table(index="Issuer", columns="AssetType",
values="MarketValue", aggfunc=np.sum)
我需要找到所有数字组合为正整数和负整数的所有行。
我尝试了两种方法来解决此问题。首先定义def 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时,我得到了我期望的准确组合。不知道我的代码在哪里中断。
答案 0 :(得分:1)
您需要在any
中使用axis=1
。
尝试:
issuer[issuer.gt(0).any(axis=1) & issuer.lt(0).any(axis=1)]