import numpy as np
import pandas as pd
data = pd.read_excel('F:/Desktop/Downloads/Funds_Holding_12_11_2017.xls')
M_Cap = pd.read_excel('F:/Desktop/Share_4_Feb_2018.xlsx','CAP(R2)_New')
Shariah = pd.read_excel('F:/Shariah_List.xlsx')
Data = data[['Ticker','SecurityName','FundCode','FundName','TotalValueFund','LiquidityNative']]
Shariah_Data = Shariah[['Ticker','Compliance Status: DEC 2017']]
Filter_Fund = Data['FundCode'].isin ([14, 16, 17, 24, 25, 49])
Fund = Data[Filter_Fund]
total_assets = np.sum(Fund['TotalValueFund'])+np.sum(Fund['LiquidityNative'])
weights = Fund['TotalValueFund']/total_assets
# 10% Breach Calculation
Fund['10% Breach'] = weights > 0.1
Fund['Weightage'] = round(weights*100,2)
out_1 = Fund[['Ticker','SecurityName','FundCode','FundName','Weightage','10% Breach','TotalValueFund']]
Cap_Data = M_Cap[['Ticker','% of Total Free','S&P Saudi Arabia','Free Float Mrk.','Riyad Income BM']]
newdata = out_1.merge(Cap_Data, on = 'Ticker', how ='inner')
#Market Cap Calculation
if Fund == 14:
newdata['Mkt_Cap'] = newdata['Weightage'] < newdata['% of Total Free']
elif Fund == 16:
newdata['Mkt_Cap_S&P'] = newdata['Weightage'] < newdata['S&P Saudi Arabia']
CAP = Shariah_Data.merge(Cap_Data_16, on = 'Ticker', how = 'inner')
newdata = out_1.merge(Cap_Data, on = 'Ticker', how ='inner')
elif Fund == 17:
newdata['Mkt_Cap_RI'] = newdata['Weightage'] < newdata['Riyad Income BM']
elif Fund == 24:
newdata['Mkt_Cap_Emaar'] = newdata['Weightage'] < newdata['Al Emaar BM %']
elif Fund == 25:
newdata['Mkt_Cap_BI'] = newdata['Weightage'] < newdata['SBIF (S&P Sharia)']
elif Fund == 49:
newdata['Mkt_Cap_Mid'] = newdata['Weightage'] < newdata['S&P SA Shariah']
else:
print("No Data Available")
# 5% Holding Calculation
Holding = newdata['TotalValueFund'] / (newdata['Free Float Mrk.']*1000000)
newdata['Holding Weight'] = Holding*100
newdata['5% Holdings'] = Holding > 0.05
newdata['% of Total Free'] = newdata['% of Total Free']*100
Final_Result = newdata[['Ticker','SecurityName','FundCode','FundName','Weightage','% of Total Free','10% Breach','Mkt_Cap','Mkt_Cap_S&P','Mkt_Cap_RI','Mkt_Cap_Emaar','Mkt_Cap_BI','Mkt_Cap_Mid','5% Holdings','Compliance Status: DEC 2017']]
Final_Result.to_excel('F:/Monitoring.xlsx')
运行上述操作后,我得到了错误:
ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
请告知我如何解决此问题。
不清楚您试图用代码实现什么。但是,您看到错误的原因很清楚:
data = pd.read_excel('F:/Desktop/Downloads/Funds_Holding_12_11_2017.xls')
# So 'data' is a pandas dataframe
Data = data[['Ticker','SecurityName','FundCode','FundName','TotalValueFund','LiquidityNative']]
# 'Data' is a dataframe as it's a slice of 'data'
Fund = Data[Filter_Fund]
# 'Fund' id a dataframe as it's a slice of 'Data'
weights = Fund['TotalValueFund']/total_assets
# 'weights' id a dataframe as it's a simple function of 'Fund'
Fund['10% Breach'] = weights > 0.1
# 'Fund' is a dataframe as it's a simple function of 'weights'
if Fund == 14:
# You are comparing 'Fund' to an integer.
熊猫感到困惑,认为您正试图通过if Fund
检查数据帧的真实性,这是一种不允许的方法,因为它是模糊的。
但我有一个错误。 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我怎样才能修好它?
当我运行以下代码时: 它给出了以下错误: ValueError:序列的真值不明确。 使用a.empty、a.bool()、a.item()、a.any()或a.all() 这里怎么了?
问题内容: 在用or条件过滤我的结果数据帧时遇到问题。我希望我的结果df提取var大于0.25且小于-0.25的所有列值。 下面的逻辑为我提供了一个模糊的真实值,但是当我将此过滤分为两个单独的操作时,它可以工作。这是怎么回事 不知道在哪里使用建议。 问题答案: 在和python语句需要-值。因为这些被认为是模棱两可的,所以您应该使用“按位” (或)或(和)操作: 对于此类数据结构,它们会重载以生成
我有一个数据帧“信号”: 因为我需要一些条件来设置我的“\u exec\u dict”,这是一个告诉交易平台我的订单是什么的字典? 问题是我不能使用 来做条件判定。 要进行测试,请执行以下操作: 有一些改变, 结果是: 搜索后,像一个系列的真相值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()
问题内容: 在用条件过滤我的结果数据帧时遇到问题。我希望我的结果提取大于0.25且小于的所有列值。 下面的逻辑为我提供了一个模糊的真实值,但是当我将此过滤分为两个单独的操作时,它起作用。这是怎么回事 不知道在哪里使用建议。 问题答案: 在和python语句需要值。因为这些被认为是模棱两可的,所以你应该使用操作: 对于此类数据结构,它们会重载以产生元素级(或)。 只是为该语句添加更多解释: 当你想获