在遍历DF列表时使用infer_objects()

时间:2018-07-19 18:24:34

标签: python pandas dataframe

在遍历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))“

0 个答案:

没有答案