我在数据框中有两列。我想将这些列合并为一个列。
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']
答案 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