当列索引更改时,如何在python中设置行索引?

时间:2018-08-14 19:18:31

标签: python pandas

我正在尝试读取公司财务信息的csv。尽管根据公司的不同,行索引的名称总是在变化(例如,对于Facebook,行索引的名称为“会计年度在12月结束。除每股数据外,美元为百万美元。”,但对于另一家公司,其会计年度将在1月结束。 ..) 如何使第一列名称保持一致?我通过重命名列进行了尝试,但是会引发错误。

stock = "FB"
#Import the data
Ratios = pd.read_csv("http://financials.morningstar.com/ajax/exportKR2CSV.html?t="+stock, skiprows=2)
incomeStatement = pd.read_csv("http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t="+stock+"&reportType=is&period=3&dataType=A&order=asc&columnYear=5&number=3", skiprows = 1)
balSheet = pd.read_csv("http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t="+stock+"&reportType=bs&period=3&dataType=A&order=asc&columnYear=5&number=3", skiprows = 1)

incomeStatement.columns(['Title','Q1','Q2','Q3','Q4','Q5', 'TTM'])
balSheet.columns(['Title','Q1','Q2','Q3','Q4','Q5', 'TTM'])
#Set the columns
Ratios.set_index("Unnamed: 0", inplace=True)
incomeStatement.set_index("Title", inplace=True)
balSheet.set_index("Title", inplace=True)

这将起作用,但是对于不同的公司,设置的索引名称将始终更改。

stock = "FB"
#Import the data
Ratios = pd.read_csv("http://financials.morningstar.com/ajax/exportKR2CSV.html?t="+stock, skiprows=2)
incomeStatement = pd.read_csv("http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t="+stock+"&reportType=is&period=3&dataType=A&order=asc&columnYear=5&number=3", skiprows = 1)
balSheet = pd.read_csv("http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t="+stock+"&reportType=bs&period=3&dataType=A&order=asc&columnYear=5&number=3", skiprows = 1)


#Set the columns
Ratios.set_index("Unnamed: 0", inplace=True)
incomeStatement.set_index("Fiscal year ends in December. USD in millions except per share data.", inplace=True)
balSheet.set_index("Fiscal year ends in December. USD in millions except per share data.", inplace=True)

以下是输出示例: Resulting Dataframe 我希望索引成为第一列,但该行的名称(会计年度结束于12月...)将针对每次迭代进行更改。

2 个答案:

答案 0 :(得分:0)

使用csv.DictReader并设置字段名称(或标题)

答案 1 :(得分:0)

read_csv时,实际上有一个参数可以立即设置索引列:

Ratios = pd.read_csv("http://financials.morningstar.com/ajax/exportKR2CSV.html?t="+stock, skiprows=2,index_col = 0)

index_col = 0确保结果数据帧将第一(第0个索引)列用作索引,并在文件包含标题的情况下为索引赋予适当的标题。