我已经尝试过这些代码。我找不到我想念的东西。
frame = pd.DataFrame(np.arange(9).reshape((3, 3)),index=['a', 'c', 'd'],columns=['Ohio', 'Texas', 'California'])
states = ['Texas', 'Utah', 'California']
frame.reindex(index=['a','b','c','d'],method='ffill',columns=states)
答案 0 :(得分:1)
我认为它不是为非数字索引值实现的,如果原始数据中不存在缺失值,则可能的解决方案:
df = frame.reindex(index=['a','b','c','d'], columns=states).ffill()
print (df)
Texas Utah California
a 1.0 NaN 2.0
b 1.0 NaN 2.0
c 4.0 NaN 5.0
d 7.0 NaN 8.0
答案 1 :(得分:0)
reindex
和method=ffill
确实实现了字符串。但是,它要求数据框/系列索引,并且在使用method
选项时,列必须单调增加或减少。 frame.columns
是非单调的,因此失败。
通过使frame
的列按词法顺序来尝试该示例。当method=ffill
和index
都是单调时,即使它们是字符串,column
也能正常工作:
frame = pd.DataFrame(np.arange(9).reshape((3, 3)),index=['a', 'c', 'd'],columns=['California', 'Ohio', 'Texas'])
states = ['Texas', 'Utah', 'California']
frame.reindex(index=['a','b','c','d'],method='ffill',columns=states)
Out[876]:
Texas Utah California
a 2 2 0
b 2 2 0
c 5 5 3
d 8 8 6
如果您的index
和columns
是字符串而不是单调的,则需要在{{1}之后调用.ffill
,.bfill
或.fillna
}
注意:此reindex
选项的约束也适用于数字method
。只需尝试创建具有数字非单调索引的数据框,用index
重新索引将返回相同的错误。
来自文档:
方法:{无,“回填” /“填充”,“填充” /“填充”,“最近”} 用于在重新索引的DataFrame中填充孔的方法。请注意:这仅适用于索引单调递增/递减的DataFrames / Series。