#python #python-3.x #pandas #dataframe
#питон #python-3.x #панды #фрейм данных
Вопрос:
Эй, у меня есть такой фрейм данных, как этот:
d = {"KEY": ["KEY2", "KEY2"], "String value": ["value 1", "value 2"], "list value": [["val1"], ["val2"]]} df = pd.DataFrame(d) df
В KEY
столбце есть одно и то же значение в обеих строках. Что я хочу сделать, так это создать одну строку из этих двух строк (или более в моем фрейме данных) таким образом, чтобы добавлялись значения из заданных столбцов (кроме KEY
и, возможно, еще одного столбца). Итак, наконец-то я хочу вот так:
d2 = {"KEY": ["KEY2"], "String value": ["value 1" "value 2"], "list value": [["val1"] ["val2"]]} res = pd.DataFrame(d2) res
Как я могу это сделать?
Ответ №1:
groupby
и sum
можно обрабатывать столбцы отдельно и оставлять некоторые столбцы «неизменными», сохраняя первое значение, предполагая, что оно одинаково для строк с одним и тем же ключом.
d = {"KEY": ["KEY2", "KEY2"], "String value": ["value 1", "value 2"], "list value": [["val1"], ["val2"]], "other value": [1, 1]} df = pd.DataFrame(d) df2 = pd.DataFrame(df.groupby('KEY')['String value'].apply(lambda x:'n'.join(x))) df2['list value'] = df.groupby('KEY')['list value'].sum() df2['other value'] = df.groupby('KEY')['other value'].first() df2
KEY String value list value 0 KEY2 value 1value 2 [val1, val2]
Комментарии:
1. спасибо 🙂 Как я могу добавить новую строку
n
между добавленнымиString value
? Возможно ли это? Более того, что, если у меня есть еще один столбец, скажемType
, для которого я не хочу выполнять суммирование?2. @Mr. Хедж вы не можете оставить один столбец без изменений, потому что новый фрейм данных будет иметь другую форму по сравнению со старым
3. @Mr. Хедж см. обновленный ответ, предполагая, что вы имеете в виду неизменность, поскольку все они имеют одинаковое значение
4. Большое спасибо!