在读取18个CSV文件并将它们全部添加到列表之后,(显示前两个):
In [175] li
Out[175]:
[ ABC_IncomeStatement_Annual_As_Originally_Reported ... TTM
0 Gross Profit ... 903,400,000
1 Total Revenue ... 903,400,000
2 Business Revenue ... 902,700,000
3 Other Revenue ... NaN
4 Operating Income/Expenses ... -280,200,000
.. ... ... ...
57 Basic EPS ... 2.56
58 Diluted EPS ... 2.56
59 Basic WASO ... 193,576,187
60 Diluted WASO ... 193,576,187
61 Fiscal year ends in Jun 30 | AUD ... NaN
[62 rows x 12 columns],
DEF_IncomeStatement_Annual_As_Originally_Reported ... TTM
0 Gross Profit ... 1,321,800,000
1 Total Revenue ... 1,347,600,000
2 Business Revenue ... 1,347,600,000
3 Other Revenue ... NaN
4 Cost of Revenue ... -25,800,000
.. ... ... ...
63 Basic EPS ... 0.07
64 Diluted EPS ... 0.07
65 Basic WASO ... 2,316,707,932
66 Diluted WASO ... 2,316,707,932
67 Fiscal year ends in Dec 31 | AUD ... NaN
其中len(li)=18。然后,我使用以下方法获取了股票行情清单:
tickers = []
for code in range(0,len(li)):
tickers.append(li[code].columns[0][:3])
['ABC',
'DEF',
etc.]
test_tuple = list(zip(tickers,li))
def tuple_to_dict(tup,di):
for a,b in tup:
di.setdefault(a,[]).append(b)
return di
然后我创建了一个元组列表
di = {}
ASX = tuple_to_dict(test_tuple,di)
现在,当我调用ASX['ABC']
时,我会得到相应的数据,但是它出现在列表对象中,而不是DataFrame中,而该对象最初是在其中并且我希望将其保持不变。
有没有办法维护DataFrame结构?有人问过类似的问题,但是没有一个与数据帧列表有关。
初始输入如下:
import pandas as pd
import glob
path = '/Users/.../.../.../.../...'
all_files = glob.glob(path + "/*.csv")
li = []
for filename in all_files:
df = pd.read_csv(filename,index_col=None,header=0)
li.append(df)
非常感谢!
答案 0 :(得分:1)
我不明白您为什么将其转换为元组然后转换为字典。您可以像下面的代码一样将其附加到字典上:
import pandas as pd
li = [pd.DataFrame({'numbers': [1, 2, 3], 'colors': ['red', 'white', 'blue']}),
pd.DataFrame({'numbers': [1, 2, 3], 'colors': ['red', 'white', 'blue']})]
keys = ["df1", "df2"]
d = {}
for i, k in enumerate(keys):
d[k] = li[i]
print(type(d["df1"]))
返回的位置:<class 'pandas.core.frame.DataFrame'>