добавление значений столбцов к панд строк

#python #pandas #dataframe #group-by

Вопрос:

 df = pd.DataFrame()
df['col1'] = ('y','y','y')
df['col2'] = ('a','b','c')
df['col3'] = ('x','x','x')
print df
 

У меня есть этот df,и я пытаюсь скопировать или переместить b, c в новые столбцы в первой строке.
Я пробовал pivot_table pd.groupby , и for index, row in top.iterrows():

Но в нем не всегда может быть три строки df . Так что, если нет никаких строк, то ничего не делайте.

Это была моя последняя попытка. Я не помню точно, с чем я пытался .groupby или pivot_table

 for index, row in df.iterrows():
    df1['col2' row] = df1['col2'][row]
    top_comb = top_comb.append(top)

 
 Col1 | Col2 | Col3 | Col21 | Col22 
 y   |   a  |  x   |  b    |   c  
 

Ответ №1:

Если вы хотите, чтобы ваш вывод был одной строкой, вы можете сделать следующее:

 if len(df) > 1:
    new_df = df.col2.loc[1:].to_frame().T.reset_index(drop=True)
    new_df.columns = [f'col2{i 1}' for i in range(len(new_df.columns))]
    pd.concat([df.loc[0, :].to_frame().T, new_df], axis=1)


  col1 col2 col3 col21 col22
0    y    a    x     b     c
 

Ответ №2:

пробовать:

 df1 = df.groupby(['col1', 'col3'], as_index=False).agg(list)
df = pd.concat([df1, df1.pop('col2').apply(pd.Series).add_prefix('col2')], 1)
 

Комментарии:

1. Это прекрасно сработало. Мне пришлось немного подогнать его к остальной части моего кода, но это было огромной помощью. Спасибо

2. Без проблем. @ракуракур