Python 如何解决此错误…使用a.empty、a.bool()、a.item()、a.any()或a.all() 将numpy导入为np 作为pd进口熊猫 data=pd.read\u excel('F:/Desktop/Downloads/Funds\u Holding\u 12\u 11\u 2017.xls') M_Cap=pd.read_excel('F:/Desktop/Share_4_Feb_2018.xlsx','Cap(R2)\u New') Shariah=pd.read\u excel('F:/Shariah\u List.xlsx') 数据=数据[['Ticker'、'SecurityName'、'FundCode'、'FundName'、'TotalValueFund'、'LiquidityNative']] Shariah_Data=Shariah[[“股票代码”,“合规状态:2017年12月]] Filter_Fund=Data['FundCode'].isin([14,16,17,24,25,49]) 基金=数据[筛选基金] 总资产=np.sum(基金['TotalValueFund'])+np.sum(基金['LiquidityNative']) 权重=基金['TotalValueFund']/总资产 #10%违约计算 基金['10%违约]=权重>0.1 基金['Weightage']=四舍五入(权重*100,2) out_1=基金[['Ticker'、'SecurityName'、'FundCode'、'FundName'、'Weightage'、'10%违约率'、'TotalValueFund'] Cap_数据=M_Cap[[‘股票行情’、‘自由总收益的百分比’、‘标准普尔沙特阿拉伯’、‘自由浮动Mrk’、‘Riyad收入BM’]] newdata=out\u 1.merge(Cap\u Data,on='Ticker',how='inner') #市值计算 如果基金=14: newdata['Mkt_Cap']=newdata['Weightage']

Python 如何解决此错误…使用a.empty、a.bool()、a.item()、a.any()或a.all() 将numpy导入为np 作为pd进口熊猫 data=pd.read\u excel('F:/Desktop/Downloads/Funds\u Holding\u 12\u 11\u 2017.xls') M_Cap=pd.read_excel('F:/Desktop/Share_4_Feb_2018.xlsx','Cap(R2)\u New') Shariah=pd.read\u excel('F:/Shariah\u List.xlsx') 数据=数据[['Ticker'、'SecurityName'、'FundCode'、'FundName'、'TotalValueFund'、'LiquidityNative']] Shariah_Data=Shariah[[“股票代码”,“合规状态:2017年12月]] Filter_Fund=Data['FundCode'].isin([14,16,17,24,25,49]) 基金=数据[筛选基金] 总资产=np.sum(基金['TotalValueFund'])+np.sum(基金['LiquidityNative']) 权重=基金['TotalValueFund']/总资产 #10%违约计算 基金['10%违约]=权重>0.1 基金['Weightage']=四舍五入(权重*100,2) out_1=基金[['Ticker'、'SecurityName'、'FundCode'、'FundName'、'Weightage'、'10%违约率'、'TotalValueFund'] Cap_数据=M_Cap[[‘股票行情’、‘自由总收益的百分比’、‘标准普尔沙特阿拉伯’、‘自由浮动Mrk’、‘Riyad收入BM’]] newdata=out\u 1.merge(Cap\u Data,on='Ticker',how='inner') #市值计算 如果基金=14: newdata['Mkt_Cap']=newdata['Weightage'],python,python-3.x,pandas,Python,Python 3.x,Pandas,运行上述操作后,我得到了错误: ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all() 请告知我如何解决此问题。不清楚您试图用代码实现什么。但是,您看到错误的原因很清楚: import numpy as np import pandas as pd data = pd.read_excel('F:/Desktop/Downloads/Funds_Holding_12_11_2017.xls')

运行上述操作后,我得到了错误:

ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()


请告知我如何解决此问题。

不清楚您试图用代码实现什么。但是,您看到错误的原因很清楚:

    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')

Pandas感到困惑,认为您正试图通过
if Fund
检查数据帧的真实性,这是一种不允许的方法,因为它是不明确的。

嗨!请在下面的代码#市值计算中包含输入数据和固定缩进。显示完整的错误堆栈将非常有用。
14
16
17
24
25
49
值从何而来?他们是否是特定公司的
基金代码
?这是基金的内部定义代码。我想将市值与我们基金的基准进行比较。那么,我应该在这方面做些什么呢case@ArfeenZia. 一次解决一个问题。我已经在上面解释了错误发生的原因,但是我不能/不应该为您重写整个脚本。为此,你可以雇佣一些专业人士。根据您的要求,根据我的回复修改您的代码。检查结果。如果你真的被卡住了,并且已经尽了最大努力,再来问另一个问题。谢谢你的回答。我已经单独做了这个计算,我只是想用上面的方法试试。无论如何,谢谢你的时间和努力。谢谢你的回应。我已经单独做了这个计算,我只是想用上面的方法试试。无论如何,谢谢你的时间和努力。
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.