如何拆分具有多个批次的数据框中的每一行,并为每个批次打印出不同的行

时间:2017-01-31 12:15:09

标签: python pandas split

我将csv文件转换为数据框。我需要根据单行中存在的批次数将数据框中的每一行拆分为不同的行。

这是输入 我只包括2行

A002,R051,02-00-00,05-21-11,00:00:00,REGULAR,003169391,001097585,05-21-11,04:00:00,REGULAR,003169415,001097588,05-21-11,08:00:00,REGULAR,003169431,001097607,05-21-11,12:00:00,REGULAR,003169506,001097686,05-21-11,16:00:00,REGULAR,003169693,001097734,05-21-11,20:00:00,REGULAR,003169998,001097769,05-22-11,00:00:00,REGULAR,003170119,001097792,05-22-11,04:00:00,REGULAR,003170146,001097801              
A002,R051,02-00-00,05-22-11,08:00:00,REGULAR,003170164,001097820,05-22-11,12:00:00,REGULAR,003170240,001097867,05-22-11,16:00:00,REGULAR,003170388,001097912,05-22-11,20:00:00,REGULAR,003170611,001097941,05-23-11,00:00:00,REGULAR,003170695,001097964,05-23-11,04:00:00,REGULAR,003170701,001097964,05-23-11,08:00:00,REGULAR,003170746,001098069,05-23-11,12:00:00,REGULAR,003170897,001098378   

1 个答案:

答案 0 :(得分:1)

设置

import pandas as pd
from io import StringIO

txt = """A002,R051,02-00-00,05-21-11,00:00:00,REGULAR,003169391,001097585,05-21-11,04:00:00,REGULAR,003169415,001097588,05-21-11,08:00:00,REGULAR,003169431,001097607,05-21-11,12:00:00,REGULAR,003169506,001097686,05-21-11,16:00:00,REGULAR,003169693,001097734,05-21-11,20:00:00,REGULAR,003169998,001097769,05-22-11,00:00:00,REGULAR,003170119,001097792,05-22-11,04:00:00,REGULAR,003170146,001097801              
A002,R051,02-00-00,05-22-11,08:00:00,REGULAR,003170164,001097820,05-22-11,12:00:00,REGULAR,003170240,001097867,05-22-11,16:00:00,REGULAR,003170388,001097912,05-22-11,20:00:00,REGULAR,003170611,001097941,05-23-11,00:00:00,REGULAR,003170695,001097964,05-23-11,04:00:00,REGULAR,003170701,001097964,05-23-11,08:00:00,REGULAR,003170746,001098069,05-23-11,12:00:00,REGULAR,003170897,001098378   
"""

df = pd.read_csv(StringIO(txt), header=None, index_col=[0, 1, 2])

pandas

使用% + // + stack

idx = pd.RangeIndex(len(df.columns))
df.columns = [idx % 5, idx // 5]
df.stack().rename_axis([None] * 4)

                             0         1        2        3        4
A002 R051 02-00-00 0  05-21-11  00:00:00  REGULAR  3169391  1097585
                   1  05-21-11  04:00:00  REGULAR  3169415  1097588
                   2  05-21-11  08:00:00  REGULAR  3169431  1097607
                   3  05-21-11  12:00:00  REGULAR  3169506  1097686
                   4  05-21-11  16:00:00  REGULAR  3169693  1097734
                   5  05-21-11  20:00:00  REGULAR  3169998  1097769
                   6  05-22-11  00:00:00  REGULAR  3170119  1097792
                   7  05-22-11  04:00:00  REGULAR  3170146  1097801
                   0  05-22-11  08:00:00  REGULAR  3170164  1097820
                   1  05-22-11  12:00:00  REGULAR  3170240  1097867
                   2  05-22-11  16:00:00  REGULAR  3170388  1097912
                   3  05-22-11  20:00:00  REGULAR  3170611  1097941
                   4  05-23-11  00:00:00  REGULAR  3170695  1097964
                   5  05-23-11  04:00:00  REGULAR  3170701  1097964
                   6  05-23-11  08:00:00  REGULAR  3170746  1098069
                   7  05-23-11  12:00:00  REGULAR  3170897  1098378