【问题标题】:Pandas insert alternate blank rows熊猫插入备用空白行
【发布时间】:2016-12-31 01:29:16
【问题描述】:

给定以下数据框:

import pandas as pd
import numpy as np
df1=pd.DataFrame({'A':['a','b','c','d'],
                 'B':['d',np.nan,'c','f']})
df1
    A   B
0   a   d
1   b   NaN
2   c   c
3   d   f

我想在每行之前插入空白行。 期望的结果是:

    A   B
0   NaN NaN
1   a   d
2   NaN NaN
3   b   NaN
4   NaN NaN
5   c   c
6   NaN NaN
7   d   f

实际上,我有很多行。

提前致谢!

【问题讨论】:

    标签: python-3.x pandas numpy


    【解决方案1】:

    有点迂回但可行:

    df1.index = range(1, 2*len(df1)+1, 2)
    df2 = pd.DataFrame(index=range(0, 2*len(df1), 2), columns=df1.columns)
    df3 = pd.concat([df1, df2]).sort()
    

    【讨论】:

      【解决方案2】:

      我认为您可以像@bananafish 那样更改索引,然后使用reindex

      df1.index = range(1, 2*len(df1)+1, 2)
      df2 = df1.reindex(index=range(2*len(df1)))
      
      In [29]: df2
      Out[29]:
           A    B
      0  NaN  NaN
      1    a    d
      2  NaN  NaN
      3    b  NaN
      4  NaN  NaN
      5    c    c
      6  NaN  NaN
      7    d    f
      

      【讨论】:

        【解决方案3】:

        使用 numpy 和 pd.DataFrame

        def pir(df):
            nans = np.where(np.empty_like(df.values), np.nan, np.nan)
            data = np.hstack([nans, df.values]).reshape(-1, df.shape[1])
            return pd.DataFrame(data, columns=df.columns)
        
        pir(df1)
        

        测试与比较

        代码

        def banana(df):
            df1 = df.set_index(np.arange(1, 2*len(df)+1, 2))
            df2 = pd.DataFrame(index=range(0, 2*len(df1), 2), columns=df1.columns)
            return pd.concat([df1, df2]).sort_index()
        
        def anton(df):
            df = df.set_index(np.arange(1, 2*len(df)+1, 2))
            return df.reindex(index=range(2*len(df)))
        
        def pir(df):
            nans = np.where(np.empty_like(df.values), np.nan, np.nan)
            data = np.hstack([nans, df.values]).reshape(-1, df.shape[1])
            return pd.DataFrame(data, columns=df.columns)
        

        结果

        pd.concat([f(df1) for f in [banana, anton, pir]],
                  axis=1, keys=['banana', 'anton', 'pir'])
        

        时机

        【讨论】:

          猜你喜欢
          • 2019-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-04
          • 2012-11-06
          相关资源
          最近更新 更多