如何均衡两个数据帧?

时间:2019-03-18 09:24:37

标签: python pandas dataframe

您好,我有两个DF(rateQualityOut和subsetOut):

“ rateQualityOut”是我创建的用于存储临时输出“ subsetOut”的空DF。想法是所有输出(一旦循环结束)都应存储在该DF中。

rateQualityOut[['pID',   'carry_dt','position', 'product_type'  ,'positionLength']].loc[currLength:currLength+addLength,:]

   pID carry_dt position product_type  positionLength
0  NaN      NaT      NaN          NaN             NaN
1  NaN      NaT      NaN          NaN             NaN
2  NaN      NaT      NaN          NaN             NaN
3  NaN      NaT      NaN          NaN             NaN
4  NaN      NaT      NaN          NaN             NaN
5  NaN      NaT      NaN          NaN             NaN

和另一个具有临时输出的DF

    subsetOut

subsetOut[['pID',   'carry_dt','position', 'product_type'  ,'positionLength']]

      pID   carry_dt              position product_type  positionLength
2739    1 2018-11-01  CITI_52299G66_201210     Physical               5
2738    1 2018-11-02  CITI_52299G66_201210     Physical               5
2737    1 2018-11-05  CITI_52299G66_201210     Physical               5
2736    1 2018-11-06  CITI_52299G66_201210     Physical               5
2735    1 2018-11-07  CITI_52299G66_201210     Physical               5

我正在将临时输出“ subsetOut”存储到“ rateQualityOut”中。而我过去所做的只是简单地做到这一点:

rateQualityOut.loc[currLength:currLength+addLength,:] = subsetOut

但是,它似乎没有按计划工作。输出显示NaN未按预期填充。

   pID carry_dt position product_type  positionLength
0  NaN      NaT      NaN          NaN             NaN
1  NaN      NaT      NaN          NaN             NaN
2  NaN      NaT      NaN          NaN             NaN
3  NaN      NaT      NaN          NaN             NaN
4  NaN      NaT      NaN          NaN             NaN
5  NaN      NaT      NaN          NaN             NaN

请问我有什么建议吗?非常感谢

1 个答案:

答案 0 :(得分:2)

通常,在每次迭代中不将subsetOut放入rateQualityOut更容易,更快捷。相反,您可以将这些子集存储到列表中,并在最后将它们连接起来:

import pandas as pd
rateQualityOut = [] #Make a list
for i in someIterator:
   #do something here
   rateQualityOut.append(subsetOut)

rateQualityOut = pd.concat(rateQualityOut)