Python 如何通过行标签跳过数据帧行

Python 如何通过行标签跳过数据帧行,python,pandas,dataframe,Python,Pandas,Dataframe,我试图跳过对一个特定数据帧行求和,因为当我这样做时,我得到了ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我知道这是一个常见的错误,但我已经读了很多文章/帖子,仍然没有弄清楚 原代码为: import os from iexfinance.stocks import Stock import pandas as pd # Set IEX Finance API Token os.environ['IEX_A

我试图跳过对一个特定数据帧行求和,因为当我这样做时,我得到了
ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

我知道这是一个常见的错误,但我已经读了很多文章/帖子,仍然没有弄清楚

原代码为:

import os
from iexfinance.stocks import Stock
import pandas as pd

# Set IEX Finance API Token
os.environ['IEX_API_VERSION'] = 'v1'
os.environ['IEX_TOKEN'] = 'token'

df = pd.read_csv("input.csv")

for index, row in df.iterrows():
    symbol = (row["Symbol"])
    company = Stock(symbol, output_format='pandas')
    df_cash_flow = company.get_cash_flow(period="quarter", last='4')
    df_cash_flow['TTM'] = df_cash_flow.sum(axis = 1)
    print(df_cash_flow)
输出为:


                    | 6/30/19 | 4/9/19 | 1/5/19 | 10/5/18 | TTM
-----------------------------------------------------------------
capitalExpenditures |   123   |   456  |   789  |   101   | 1469 
-----------------------------------------------------------------
cashChange          |   101   |   633  |   453  |   902   | 2089 
-----------------------------------------------------------------
............
-----------------------------------------------------------------
reportDate          | 6/30/19 | 4/9/19 | 1/5/19 | 10/5/18 |  2019-06-302019-04-09...
-----------------------------------------------------------------
depreciation        |   764   |   122  |   423  |   199   | 1508
-----------------------------------------------------------------
但我只希望输出是:

                    | 6/30/19 | 4/9/19 | 1/5/19 | 10/5/18 | TTM
-----------------------------------------------------------------
capitalExpenditures |   123   |   456  |   789  |   101   | 1469 
-----------------------------------------------------------------
cashChange          |   101   |   633  |   453  |   902   | 2089 
-----------------------------------------------------------------
............
-----------------------------------------------------------------
reportDate          | 6/30/19 | 4/9/19 | 1/5/19 | 10/5/18 |  
-----------------------------------------------------------------
depreciation        |   764   |   122  |   423  |   199   | 1508
-----------------------------------------------------------------
因此,我尝试使用
df.loc['reportDate']
跳过
reportDate
行标签:

df_cash_flow = company.get_cash_flow(period="quarter", last='4')
    if df_cash_flow.loc['reportDate']:
        pass
    else:
        df_cash_flow['TTM'] = df_cash_flow.sum(axis = 1)
但这将返回
ValueError

如何解决此问题?

解决方法 如果问题仅仅是一个单元格,那么像丢弃不需要的结果这样的解决方法是可以接受的

按其工作方式进行求和:
df\u cash\u flow['TTM']=df\u cash\u flow.sum(axis=1)

然后做:

这样,您就可以用空字符串替换行
'reportDate'
和列
'TTM'
处单元格中的值

正确的解决方案 正确的解决方案是在求和之前只选择所需的行:

df_cash_flow['TTM'] = df_cash_flow.loc[df_cash_flow.index.drop('reportDate')].sum(axis=1)
通过从
索引中删除
'reportDate'
,只对其他行执行求和。您在单元格中的行
'reportDate'
和列
'TTM'
处获得
NaN

如果需要,可以轻松扩展此解决方案以排除其他行。只需删除所有你不想求和的索引标签,将它们放在一个列表中:
df\u cash\u flow.index.drop(['reportDate','otherlabel1','otherlabel2'])

df_cash_flow['TTM'] = df_cash_flow.loc[df_cash_flow.index.drop('reportDate')].sum(axis=1)