#python #pandas #dataframe #pandas-groupby
#python #pandas #фрейм данных #pandas-groupby
Вопрос:
У меня есть фрейм данных, в котором мне нужно объединить две строки. Пример:
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr>
<td>City1</td>
<td>Pop1</td>
<td>Area1</td>
</tr>
<tr>
<td>City2</td>
<td>Pop2</td>
<td>Area2</td>
</tr>
<tr>
<td>City1</td>
<td>Pop3</td>
<td>Area3</td>
</tr>
</tbody>
</table>
Я хочу объединить City1 в одну строку и пытаюсь добавить (суммировать) население и площадь
Ожидаемый результат должен быть таким:
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr>
<td>City1</td>
<td>Pop(1 3)</td>
<td>Area(1 3)</td>
</tr>
<tr>
<td>City2</td>
<td>Pop2</td>
<td>Area2</td>
</tr>
</tbody>
</table>
Я пробовал разные варианты
df.groupby(['Col1']).aggregate({'Col2': "sum", 'Col3': "sum"})
Это объединяет строки, но вместо суммирования значений просто записывает их по одному рядом друг с другом, например: City1, Pop1Pop3, Area1Area3.
Чего мне не хватает?
Ответ №1:
Преобразуйте dtype Col2
и Col3
в int или float . Они объединяются, потому что они рассматриваются как str (или объекты)
Комментарии:
1. Я только что попробовал это, и я получил еще одну ошибку, так как число равно 669,338. Я попытался преобразовать строку в число с плавающей запятой, но это выдает ошибку. Я думаю, проблема в том, что в качестве разделителя вместо точки используется запятая. 669,338 вместо 669,338.
2. Мне удалось решить эту проблему, я заменил запятую точкой, а затем преобразовал их в int. Спасибо!