#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. Без проблем. @ракуракур