【问题标题】:merge 2 columns in pandas dataframe filling the NaNs with the previous value [duplicate]合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]
【发布时间】:2017-10-16 20:25:07
【问题描述】:

我有一个数据框:

         State                           RegionName
0      Alabama                              Alabama
1          NaN                               Auburn
2          NaN                             Florence
3          NaN                         Jacksonville
4          NaN                           Livingston
5          NaN                           Montevallo
6          NaN                                 Troy
7          NaN                           Tuscaloosa
8          NaN                             Tuskegee
9       Alaska                               Alaska
10         NaN                            Fairbanks
11     Arizona                              Arizona
12         NaN                            Flagstaff
13         NaN                                Tempe
14         NaN                               Tucson

如何退货

DataFrame([["Alabama", "Auburn"], 
           ["Alabama", "Florence"], .
            .., 
           ["Alaska", "Fairbanks"],  
           ["Arizona", "Flagstaff"],  
           ...], columns=["State", "RegionName"])

所以所有值都很好地合并了?

我曾尝试过:df['State'] = df['State'].apply(lambda x: df['RegionName']),但它缺少在新的 RegionName 启动时为 RegionName 分配新 State 的逻辑。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以试试fillna。

    df=pd.DataFrame([["Alabama", "Auburn"],
                   [np.nan, "Florence"],
                   [np.nan, "Fairbanks"],
                   ["Arizona", "Flagstaff"]], columns=["State", "RegionName"])
    df
    Out[94]: 
         State RegionName
    0  Alabama     Auburn
    1      NaN   Florence
    2      NaN  Fairbanks
    3  Arizona  Flagstaff
    
    
    df.fillna(method='ffill')
    Out[95]: 
         State RegionName
    0  Alabama     Auburn
    1  Alabama   Florence
    2  Alabama  Fairbanks
    

    【讨论】:

      【解决方案2】:

      需要ffill:

      df['State'] = df['State'].ffill()
      print (df)
            State    RegionName
      0   Alabama       Alabama
      1   Alabama        Auburn
      2   Alabama      Florence
      3   Alabama  Jacksonville
      4   Alabama    Livingston
      5   Alabama    Montevallo
      6   Alabama          Troy
      7   Alabama    Tuscaloosa
      8   Alabama      Tuskegee
      9    Alaska        Alaska
      10   Alaska     Fairbanks
      11  Arizona       Arizona
      12  Arizona     Flagstaff
      13  Arizona         Tempe
      14  Arizona        Tucson
      

      【讨论】:

      • 在我看来,这是第一个以.ffill() 为答案的问题。
      • @DSM - 我觉得它很棒;)
      • 我想我的意思是以前可能已经问过一个答案如此简单的问题,而不是再次回答它,我们应该找到骗子。当我得到一秒钟的时间时,我可以自己找到一个好的目标,如果没有其他人还没有。
      • 你真的很亲密df1 = df[df['State'] != df['RegionName']]
      • 然后使用参数drop=True - df1 = df[df['State'] != df['RegionName']].reset_index(drop=True)
      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 2022-07-22
      • 2018-04-13
      • 1970-01-01
      • 2018-06-27
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多