在遍历DF列表时,是否可以利用熊猫数据框的 .infer_objects()方法?
示例循环:
frame_list = [frame01, frame02]
for index, item in enumerate(frame_list):
item.columns.names = ['columnNames_list']
# item = item.infer_objects() # fails
# frame_list[index] = item.infer_objects() # fails
# item = frame_list[index].infer_objects() # fails
例如,当我循环浏览DF列表时,可以操纵 .columns.names 和 .index.names 属性,但是我似乎无法推断出循环中使用 .infer_objects()的数据类型。需要明确的是,它无法更改任何数据类型。在这种情况下,所有字段仍然是“对象”数据类型,包括当分别将 .infer_objects()应用于DF时变为“ float64”或“ int”的那些字段。
在数据开始之前,我从* .xls表获取数据,其中包含许多空行。当然,我可以手动删除这些行,但是在我的工作流程中有一个手动步骤。
我发现的大多数SO主题都涉及在for循环内更改或更新或修改DF的特定列(系列),此处不适用。一些人指出,我们所有人都应避免在通过索引进行引用并制作DF的副本来遍历列表时修改列表的组成部分。很好的建议,但是我尝试过各种带有循环的分配组合,等等,没有任何运气。
样本数据:
“ pd.DataFrame({'Unnamed:0':pd.Series([nan,nan,nan,nan, 'portName','port01','port01','port01','port01','port01', 'port02','port02','port02','port02', 'port02'],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15, step = 1)),'Unnamed:1':pd.Series([nan,nan,nan,nan,'secID', '10000A00','10000A01','10000A02','10000A03','10000A04', '10000A05','10000A06','10000A07','10000A08', '10000A09'],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15, step = 1)),'Unnamed:2':pd.Series([nan,nan,nan,nan,'cpn',5.25, [6.25、6.25、7.25、6.25、6.25、7.25、8.25、7.25、6.25],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15,step = 1)),'Unnamed:3' :pd.Series([nan,nan,nan,nan,'matDt', datetime.datetime(2018,7,15,0,0),datetime.datetime(2038,7,1,0, 0),datetime.datetime(2018、10、1、0、0),datetime.datetime(2045、1, 16,0,0),datetime.datetime(2029,9,25,0,0), datetime.datetime(2033,7,1,0,0),datetime.datetime(2027,8,1,0, 0),datetime.datetime(2041、10、15、0、0),datetime.datetime(2024、10, 1,0,0),datetime.datetime(2038,6,15,0, 0)],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15,step = 1)), '未命名:4':pd.Series([nan,nan,nan,nan,'avgLife',0.04,7.69, 0.25,3.76,1.18,8.23,0.09,8.29,1.25,6.96],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15,step = 1)),'未命名:5':pd .Series([nan,nan,nan,nan,'rtgNAIC',2,1,1,1,1, 1,1,1,1,1],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15, step = 1)),'Unnamed:6':pd.Series([nan,nan,nan,nan,'bookValue', 6620257.15,5000000,4999338.08,4807411.33,4753268.3,2485506.77,2300666.34,2269412.57,2250000,2235763.43],dtype ='object',index = pd.RangeIndex(start = 0,stop = 15,step = 1))},index = pd.RangeIndex(start = 0,stop = 15,step = 1))“