Python 将数据帧的多列值合并到一列中,中间带括号

Python 将数据帧的多列值合并到一列中,中间带括号,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有一个数据帧 category value percentage_difference Cosmetics 789.99 300.0 Fruits 27.68 400.0 Clothes 179.20 500.0 我想添加第四列,使其值为category(值,百分比) 对于for循环,我可以做什么?没有for循环还有其他有效的方法吗?使用列表理解的另一种方法: df = pd.DataFrame( { 'category': ['Cos

我有一个数据帧

category     value    percentage_difference
Cosmetics    789.99   300.0
Fruits       27.68    400.0
Clothes      179.20   500.0
我想添加第四列,使其值为category(值,百分比)


对于for循环,我可以做什么?没有for循环还有其他有效的方法吗?

使用列表理解的另一种方法:

df = pd.DataFrame( { 'category': ['Cosmetics', 'Fruits', 'Clothes'],
                     'value': [789.99,27.68, 179.20],
                    'percentage_difference': [300.0,400.0,500.0]})
df['merge_value'] = df.apply(lambda r: "{0}({1}, {2}%)".format(r['category'], r['value'], r['percentage_difference']), axis=1)
df['merge_value'] = ['{}({}, {:0}%)'.format(x, y, int(z)) for x, y, z in
                     df[['category', 'value', 'percentage_difference']].values]
[外]


另一种方法是将列添加为字符串:

df=df.assign(merge_value=
      df.category+"("+df.value.astype(str)+','+df.percentage_difference.astype(str)+"%)")
print(df)

    category   value  percentage_difference              merge_value
0  Cosmetics  789.99                  300.0  Cosmetics(789.99, 300%)
1     Fruits   27.68                  400.0      Fruits(27.68, 400%)
2    Clothes  179.20                  500.0     Clothes(179.2, 500%)
df=df.assign(merge_value=
      df.category+"("+df.value.astype(str)+','+df.percentage_difference.astype(str)+"%)")
print(df)
    category   value  percentage_difference             merge_value
0  Cosmetics  789.99                    300  Cosmetics(789.99,300%)
1     Fruits   27.68                    400      Fruits(27.68,400%)
2    Clothes  179.20                    500     Clothes(179.2,500%)