Добавить несколько строк в виде одного строки Python на основе группы по - PullRequest
0 голосов
/ 20 сентября 2018

каждый, я новичок в python. У меня есть набор данных типа

ROLLNO     G1     G2     G3    G4
1          12     14     14    20
1          10     12     11    12
2          14     02     16    18
2          18     16     12    14

Я хочу объединить их как

ROLLNO    G1    G2     G3    G4   G5     G6     G7    G8
1         12    14     14    20   10     12     11    12
2         14    02     16    18   18     16     12    14

Это код, который я написал, но ондавая мне неправильный результат.

print (CseStudents_ds.groupby('ROLLNO').apply(' '.join).reset_index())

Я много искал и думал об использовании группы, но не смог понять, что делать дальше.Любая помощь

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Попробуйте это форматирование столбцов и группового и нового фрейма данных и concat и drop:

v = df.groupby('ROLLNO').apply(lambda x: x.values.tolist())

df = pd.DataFrame(v.tolist(), index=v.index)\
       .rename(columns=lambda x: x + 1)\
       .add_prefix('G')\
       .reset_index()
df1 = pd.DataFrame(df['G1'].values.tolist())
df2 = pd.DataFrame(df['G2'].values.tolist())

df = pd.concat([df['ROLLNO'], df1, df2], axis=1)
df.columns=df.columns.astype(str)
df=df.drop(['0','6'],1)
df.columns = [df.columns[0]] + [f'G{i+1}' for i in range(len(df.columns)-1)]
print(df)
0 голосов
/ 20 сентября 2018

Вы можете сгруппировать фрейм данных по ROLLNO и сгладить строки, назначив их фрейму данных

Фрейм данных

    ROLLNO  G1  G2  G3  G4
0   1   12  14  14  20
1   1   10  12  11  12
2   2   14  2   16  18
3   2   18  16  12  14


df.set_index(['ROLLNO'],inplace=True)
df = df.groupby(df.index).apply(lambda x: x.values.flatten())
df1 = pd.DataFrame(df.values.tolist(),columns=['G{}'.format(i) for i in range(1,len(df.columns)*2-1)])
df1['ROLLNO'] = df.index

Out:

    G1  G2  G3  G4  G5  G6  G7  G8  ROLLNO
0   12  14  14  20  10  12  11  12  1
1   14  2   16  18  18  16  12  14  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...