我有一些Dataframes,月平均值如下:
Month,Value1,Value2
02,1,1
03,2,2
04,3,3
06,4,4
07,5,5
08,6,6
09,7,7
10,8,8
12,9,9
我的问题是那些数据帧在几个月内丢失了,在附带的示例中,缺少第1,5和11个月。
因此,我想重新索引数据框并按NaN填充缺失的值,如下所示:
Month,Value1,Value2
01,NaN,NaN
02,1,1
03,2,2
04,3,3
05,NaN,NaN
06,4,4
07,5,5
08,6,6
09,7,7
10,8,8
11,NaN,NaN
12,9,9
我做了这个小代码:
data = pd.read_csv("test.csv", index_col=[0])
new_index = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
data = data.reindex(new_index)
不幸的是,输出远远不是所需的输出,所有的值现在都被NaN替换:
Month,Value1,Value2
01,NaN,NaN
02,NaN,NaN
03,NaN,NaN
04,NaN,NaN
05,NaN,NaN
06,NaN,NaN
07,NaN,NaN
08,NaN,NaN
09,NaN,NaN
10,NaN,NaN
11,NaN,NaN
12,NaN,NaN
有谁知道为什么?也许如何解决这个问题?
答案 0 :(得分:1)
当您阅读csv时,索引的类型为int64
,您可以查看以下内容:
data = pd.read_csv("test3.csv", index_col=[0])
print(data.index.dtype)
结果:
int64
现在,使用reindex
时如下:
new_index = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
data = data.reindex(new_index)
在上面,如果new_index
类型为str
,则它与现有索引不匹配,并且将生成新对象:
根据{{3}}:
文档字符串:
使用可选的填充逻辑将DataFrame符合到新索引 NA / NaN在先前索引中没有值的位置。一个新对象 除非新索引等于当前的索引,否则会产生 复制=假
因此,您可能希望尝试使用类型为int
而不是str
的新索引:
new_index = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
data = data.reindex(new_index)