【问题标题】:slice and fill rows/columns pandas切片和填充行/列 pandas
【发布时间】:2017-05-09 20:48:23
【问题描述】:

我有一个小样本数据

import pandas as pd
d = {
 'title': ['string1', 'string2', 'string3', 'string4', 'string5', 'string6'],
 'Num/Den': ['Numerator', 'Denominator', 'Numerator', 'Denominator', 'Numerator','Denominator', 
             'Numerator','Denominator','Numerator', 'Denominator', 'Numerator', 'Denominator'],
 'two': ['tstring1', 'tstring2', 'tstring3', 'tstring4', 'tstring5', 'tstring6', 
         'tstring7', 'tstring8','tstring9','tstring10','tstring11','tstring12']

}
df = pd.DataFrame(d)

此代码将不起作用,因为列没有相同的行!我不确定如何在 stackoverflow 上以另一种方式显示原始数据。

数据如下所示:

title         Num/Den             two
string1       Numerator          tstring1
              Denominator        tstring2
string2       Numerator          tstring3
              Denominator        tstring4
string3       Numerator          tstring5
              Denominator        tstring6    
string4       Numerator          tstring7
              Denominator        tstring8    
string5       Numerator          tstring9
              Denominator        tstring10
string6       Numerator          tstring11
              Denominator        tstring12 

我希望我的数据看起来像这样,基本上只是用其前一个单元格的值填充空单元格:

title         Num/Den             two
string1       Numerator          tstring1
string1       Denominator        tstring2
string2       Numerator          tstring3
string2       Denominator        tstring4
string3       Numerator          tstring5
string3       Denominator        tstring6    
string4       Numerator          tstring7
string4       Denominator        tstring8    
string5       Numerator          tstring9
string5       Denominator        tstring10
string6       Numerator          tstring11
string6       Denominator        tstring12 

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以用nan/None替换空字符串,然后做一个ffill

    df['title'] = df.title.replace("", pd.np.nan).ffill()
    df
    
    #       Num/Den   title     two
    #0  Numerator   string1 tstring1
    #1  Denominator string1 tstring2
    #2  Numerator   string2 tstring3
    #3  Denominator string2 tstring4
    # ...
    

    【讨论】:

      【解决方案2】:

      你可以使用numpyrepeat函数:

      d['title'] = np.repeat(d['title'], 2)
      df = pd.DataFrame(d)
      

      数据框示例:

            Num/Den    title        two
      0     Numerator  string1   tstring1
      1   Denominator  string1   tstring2
      2     Numerator  string2   tstring3
      3   Denominator  string2   tstring4
      4     Numerator  string3   tstring5
      5   Denominator  string3   tstring6
      6     Numerator  string4   tstring7
      7   Denominator  string4   tstring8
      8     Numerator  string5   tstring9
      9   Denominator  string5  tstring10
      10    Numerator  string6  tstring11
      11  Denominator  string6  tstring12
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-09
        • 2019-07-27
        • 2017-11-18
        • 2018-01-30
        相关资源
        最近更新 更多