конкатенация значений столбцов pandas dataframe - PullRequest
0 голосов
/ 29 сентября 2019

Здравствуйте, у меня есть dateframe1 значений, и я хочу преобразовать его в новый dataframe2 путем объединения значений столбцов в исходном dataframe1, т.е.

dataframe1
ProductName  Value otherValue
Product1      2     5
Product2      3     2
Product1      1     5
Product3      4     7
Product3      5     7
Product1      5     5
Product2      9     2

dataframe2
ProductName  Value     otherValue
Product1      2 1 5       5
Product2      3 9         2
Product3      4 5         7

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Вы можете группировать ProductName и агрегировать, используя ' '.join на Value и first на otherValue:

result = df.assign().groupby('ProductName', as_index=False).agg({ 'Value' : lambda x : ' '.join(map(str, x)), 'otherValue' : 'first' } )

print(result)

Выход

  ProductName  Value  otherValue
0    Product1  2 1 5           5
1    Product2    3 9           2
2    Product3    4 5           7

Обратите внимание, что в этом решении предполагается, что столбец Value не является строкой, в противном случае вы можете использовать ' '.join напрямую

0 голосов
/ 29 сентября 2019

Вы можете попробовать это в две строки.во-первых, нам нужно превратить столбец Value в строки, чтобы мы могли выполнять операции объединения и операции, а во-вторых, все операции для возврата желаемого результата:

import pandas as pd
import numpy as np 
df = pd.DataFrame(data={'ProductName':['Product1','Product2','Product1','Product3','Product3','Product1','Product2'],'Value':[2,3,1,4,5,5,9],'otherValue':[5,2,5,7,7,5,2]})
df['Value'] = df['Value'].astype(str)
df = df.merge(df.groupby('ProductName',as_index=True)['Value'].apply(' '.join).reset_index(),how='left',left_on='ProductName',right_on='ProductName').drop('Value_x',axis=1).drop_duplicates().rename(columns={'Value_y':'Value'})

print (df) Вывод:

  ProductName  otherValue   Value
0    Product1           5   2 1 5
1    Product2           2     3 9
3    Product3           7     4 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...