Модификация Dataframe с помощью Pandas - PullRequest
0 голосов
/ 10 июля 2020

У меня есть входной файл CSV, как показано ниже

enter image description here

and the output should be like this

введите описание изображения здесь

Как этого добиться с помощью pandas?

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Я бы использовал DataFrame.melt и groupby.agg с as_index=False

new_df = (df.assign(**df[['column2', 'column3']].astype(str))
            .melt('column1', 
                  value_vars=['column_2', 'column_3'], 
                  value_name='column_2')
            .groupby("column_1", as_index=False)[['column_2']]
            .agg( "|".join))

DataFrame.assign используется для иметь возможность динамически изменять тип столбцов на строку, выбирая только столбцы 2 и 3 .

Это может быть необходимо, если column1 не является строкой в ​​какой-то момент

1 голос
/ 10 июля 2020

попробуйте это, pandas.melt, чтобы преобразовать данный DataFrame из широкого формата в длинный формат, groupBy.apply, чтобы объединить значения.

import pandas as pd

(
    pd.melt(df, id_vars="column_1",
            value_vars=['column_2', 'column_3'], value_name='column_2')
        .astype(str)
        .groupby("column_1")['column_2']
        .apply(lambda x: "|".join(x)).reset_index()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...