将两列中的数据合并为一而不影响数据值

时间:2019-12-17 12:07:17

标签: python-3.x pandas

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

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']    

2 个答案:

答案 0 :(得分:0)

第一个解决方案是将两列都转换为字符串,然后与+连接,最后将Series转换为一列DataFrame-但是,仅当列{的数字不像1时,该解决方案才有效{1}}:

b

或者如果要为后两行使用数字混合值,并为前两行使用字符串,请使用:

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

答案 1 :(得分:0)

您可以尝试一下,

>>> import pandas as pd
>>> df = pd.DataFrame({'a': [500, 200, 13, 47], 'b':['$', '€', .586, .02]})
>>> df.apply(lambda row: str(row['a']) + str(row['b']).replace('0.', '.'), axis=1)
0      500$
1      200€
2    13.586
3     47.02
dtype: object