2014-03-26 31 views
2

我的.csv文件以逗号分隔,这是read_csv的标准设置。用pandas.read_csv和索引读取csv文件创建NaN条目

这是工作:

T1 = pd.DataFrame(pd.read_csv(loggerfile, header = 2)) #header contains column "1" 

但只要我添加了一些DataFrame的构造除了read_csv,我的所有值都突然NaN。 为什么?如何解决这个问题?

datetimeIdx = pd.to_datetime(T1["1"])    #timestamp-column 
T2 = pd.DataFrame(pd.read_csv(loggerfile, header = 2), index = datetimeIdx) 

回答

6

这是没有必要包裹read_csvDataFrame调用,因为它已经返回DataFrame

如果你想改变索引,你可以使用​​或直接设置索引:如果你想保持在数据帧的列作为一个日期

T1 = pd.read_csv(loggerfile, header = 2) 
T1.index = pd.DatetimeIndex(T1["1"]) 

(而不是字符串):

T1 = pd.read_csv(loggerfile, header = 2) 
T1["1"] = pd.DatetimeIndex(T1["1"]) 
T2 = T1.set_index("1", drop=False) 

但更好的是,你可以在​​直接做到这一点(假设列“1”是第一列):

pd.read_csv(loggerfile, header=2, index_col=0, parse_dates=True) 

返回与NaNs一个数据帧的原因是因为DataFrame()通话与数据框中输入会做与所提供的输入reindex操作。由于datetimeIdx中的标签都不在T1的原始索引中,因此您将获得包含所有NaN的数据帧。

+0

这个答案可能与我的另一个问题有关吗? http://stackoverflow.com/questions/22655667/dataframe-correlation-produces-nan-although-its-values-are-all-integers 是否有可能保持index-col作为副本在数据帧中? – user2366975

+0

我的第一个建议(直接设置索引)会将列保留在数据框中 – joris