Объединение строк, содержащих пустые ячейки и дубликаты в Pandas - PullRequest
0 голосов
/ 30 октября 2019

Я хочу объединить строки в большой файл Excel, используя Python Pandas. Допустим, в файле Excel или CSV, у меня есть:

Kelly | $400 |      |      | $20 |
Kelly |      | $200 |      |     |
Kelly |      |      | $500 |     |
John  |      |  $2  | ($7) |     |
John  |      |      |      | $10 |

Я хочу в итоге:

Kelly | $400 | $200 | $500 | $20 |
John  |      |  $2  | ($7) | $10 |

Есть ли простое решение? Заранее спасибо.

1 Ответ

1 голос
/ 30 октября 2019

Звучит так, будто вы ищете groupby :

import pandas as pd
import numpy as np

df = pd.DataFrame(
data={'Name' : ['Kelly', 'Kelly', 'Kelly', 'John', 'John'],
                   'col1' : [400, np.nan, np.nan, np.nan, np.nan],
                   'col2' : [np.nan, 200, np.nan, 2, np.nan],
                   'col3' : [np.nan, np.nan, 500, -7, np.nan],
                   'col4' : [20, np.nan, np.nan, np.nan, 10],})

print (df)

    Name   col1   col2   col3  col4
0  Kelly  400.0    NaN    NaN  20.0
1  Kelly    NaN  200.0    NaN   NaN
2  Kelly    NaN    NaN  500.0   NaN
3   John    NaN    2.0   -7.0   NaN
4   John    NaN    NaN    NaN  10.0


print(df.groupby('Name').sum())

Вывод:

        col1   col2   col3  col4
Name                            
John     0.0    2.0   -7.0  10.0
Kelly  400.0  200.0  500.0  20.0

Редактировать : Если вы получаете только сумму первого столбца, тогда ваши типы данных для других столбцов могут быть не числовыми. Если вы примените groupby ко всему фрейму данных, в каждом столбце будет результат аггфункции. Попробуйте использовать df.info (), чтобы увидеть, какие типы данных используются в ваших столбцах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...