объединить несколько столбцов значения кадра данных в один столбец с скобкой в ​​середине - PullRequest
2 голосов
/ 10 июня 2019

У меня есть датафрейм.

category     value    percentage_difference
Cosmetics    789.99   300.0
Fruits       27.68    400.0
Clothes      179.20   500.0

Я хочу добавить четвертый столбец, чтобы его значением была категория (значение, процент)

category     value    percentage_difference merge_value
Cosmetics    789.99   300.0                 Cosmetic(789.99, 300%)
Fruits       27.68    400.0                 Fruits(27.68, 400%)
Clothes      179.20   500.0                 Clothes(179.20, 500%

С помощью цикла for я могу сделать, есть ли другой эффективный метод без цикла for?

Ответы [ 3 ]

4 голосов
/ 10 июня 2019

Другой подход, использующий понимание списка:

df['merge_value'] = ['{}({}, {:0}%)'.format(x, y, int(z)) for x, y, z in
                     df[['category', 'value', 'percentage_difference']].values]

[вне]

    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%)
4 голосов
/ 10 июня 2019

Другой подход - просто добавить столбец в виде строк:

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%)
3 голосов
/ 10 июня 2019
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...