【问题标题】:Pandas Splitting a Row into Multiple RowsPandas 将一行拆分为多行
【发布时间】:2020-06-29 13:45:07
【问题描述】:

我在这样的表/数据框中有一个输入行:

        0                                     1                2       
  1. 期间 描述 开始日期 结束日期 2015 年 8 月 1 日 2016 年 7 月 31 日 2016 年 8 月 1 日 2017 年 7 月 31 日 3 2017 年 8 月 1 日 2018 年 7 月 31 日

需要输出:

       0           1        2         3
 1. Start Date 8/1/2015  8/1/2016  8/1/2017  

 2. End Date   7/31/2016 7/31/2017 7/31/2018 

这可能吗?我不确定如何继续,将行分成两行。列中不需要“期间描述”文本。 其中 0, 1 ,2 & 3 列标题..

第 0 列标题有:期间描述开始日期结束日期, 第一列标题有:8​​/1/2015 7/31/2016, 第二列标题有:8​​/1/2016 7/31/2017

等等……

【问题讨论】:

  • 您介意以表格格式澄清原始数据集吗?
  • 根据你可以尝试的输入,finds = re.findall("\d+/\d+/\d+", input_); finds[::2]; finds[1::2]
  • @Sushanth 是的,我可以完美地使用这个......谢谢! :)

标签: python python-3.x pandas pandas-groupby


【解决方案1】:

一个简单的拆分和连接方法就可以了。

>>> a='Period Description Start Date End Date 8/1/2015 7/31/2016 8/1/2016 7/31/2017 8/1/2017 7/31/2018'
>>> a.split()
['Period', 'Description', 'Start', 'Date', 'End', 'Date', '8/1/2015', '7/31/2016', '8/1/2016', '7/31/2017', '8/1/2017', '7/31/2018']
>>> b = a.split()[2:]
>>> b
['Start', 'Date', 'End', 'Date', '8/1/2015', '7/31/2016', '8/1/2016', '7/31/2017', '8/1/2017', '7/31/2018']
>>> c = [' '.join(b[:2]),*b[4:-3]]
>>> c
['Start Date', '8/1/2015', '7/31/2016', '8/1/2016']
>>> d = [' '.join(b[2:4]),*b[-3:]]
>>> d
['End Date', '7/31/2017', '8/1/2017', '7/31/2018']
>>> df = pd.DataFrame([c,d])
>>> df
           0          1          2          3
0  Start Date   8/1/2015  7/31/2016   8/1/2016
1    End Date  7/31/2017   8/1/2017  7/31/2018

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多