【问题标题】:Combine data from two columns into one without affecting the data values将两列数据合二为一,不影响数据值
【发布时间】:2020-04-09 22:33:09
【问题描述】:

我在一个数据框中有两列。我想将这些列合并为一列。

df = pd.DataFrame({'a': [500, 200, 13, 47], 'b':['$', '€', .586,.02]})

df
Out: 
             a     b
       0     500   $
       1     200   €
       2     13   .586
       3     47   .02

我想在不影响数据的情况下合并这两列。

预期输出:

    df
Out: 
              a     
       0     500$
       1     200€
       2     13.586
       3     47.02

请帮帮我...

我尝试了以下解决方案,但它对我不起作用,

df.b=np.where(df.b,df.b,df.a)
df.loc[df['b'] == '', 'b'] = df['a']    

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    第一个解决方案将两列都转换为字符串,然后与+ 连接,最后将系列转换为一列DataFrame - 但它仅在1b 的数字较少时才有效:

    df1 = df.astype(str)
    df = (df1.a + df1.b.str.replace(r'^0', '')).to_frame('a')
    print (df)
            a
    0    500$
    1    200€
    2  13.586
    3   47.02
    

    或者,如果想要最后 2 行的混合值数字和前 2 行的字符串,请使用:

    m = df.b.apply(lambda x: isinstance(x, str))
    
    df.loc[m, 'a'] = df.loc[m, 'a'].astype(str) + df.b
    df.loc[~m, 'a'] += df.pop('b')
    print (df)
            a
    0    500$
    1    200€
    2  13.586
    3   47.02
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 2014-09-04
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多