我有一组DataFrames的,我试图变成一个面板。 这里是我的代码:熊猫面板返回NaN的
# OPEN THE FILES INTO DATAFRAMES
filenames = ['Yahoo_2016-01-17.csv', 'Yahoo_2016-01-18.csv',
'Yahoo_2016-01-19.csv','Yahoo_2016-01-23.csv','Yahoo_2016-01-27.csv',
'Yahoo_2016-02-05.csv', 'Yahoo_2016-02-06.csv', 'Yahoo_2016-02-09.csv',
'Yahoo_2016-02-11.csv', 'Yahoo_2016-02-13.csv', 'Yahoo_2016-02-15.csv',
'Yahoo_2016-02-16.csv', 'Yahoo_2016-02-29.csv']
dates = np.array(['2016-01-17', '2016-01-18', '2016-01-19', '2016-01-23',
'2016-01-27', '2016-02-05', '2016-02-06','2016-02-09',
'2016-02-11', '2016-02-13', '2016-02-15', '2016-02-16',
'2016-02-29']).astype('datetime64[D]')
filepath = '/Users/RickS/Documents/Investing/Stock_files/GENERAL/'
dfs = [pd.read_csv(filepath+f) for f in filenames]
# Panel not working...
panel = pd.Panel(dict([(date, df) for date in dates for df in dfs]))
panel.swapaxes('major','minor')
然而,当我尝试读取面板,在每个数据帧中的所有值都变成了NaN的:
当我看dataframes单独他们一切看起来不错。 这里是被导入到DF的CSV文件之一: example_csv_file
有一点要注意,可能(也可能不会)是很重要的是,每个数据帧的dtypes都不尽相同:
In [24]: dfs[1].dtypes
Out[24]:
Name object
Symbol object
Previous_Close float64
Average_Daily_Volume int64
Change_&_Percent_Change object
Earnings/Share float64
EPS_Estimate_Current_Year float64
EPS_Estimate_Next_Quarter float64
EPS_Estimate_Next_Year float64
52-week_Low float64
52-week_High float64
EBITDA object
200-day_Moving_Average float64
P/E_Ratio float64
PEG_Ratio float64
Short_Ratio float64
1_yr_Target_Price float64
52-week_Range object
Date object
dtype: object
我在做什么错?
有趣!如果你的例子是自包含的 - 如果你提供了产生相同问题的样本数据,那么帮助你会更容易。本网站更好地解释:http://sscce.org/ – exp1orer
没有实际数据,我们无法复制。你用'dict()'包装的列表理解存在一个问题,我几乎发布了一个答案,但在所有的试验中,我无法重新创建所有的NaN。你的“日期”和“文件名”长度是否相同?另外,把它保存到字典中,'dict([(date,df)为日期中df的日期]]并输出其内容。你看到NaN了吗? – Parfait
我编辑的问题包括更多的细节,包括更完整的代码和作为数据框读取的csv文件之一。我测试了上面定义的字典--dict([(date,df)日期为df中df的日期]) - 并且结果很好(所有数据都在那里)。“日期”和“文件名”的长度都是13. – RSHAP