У меня есть DataFrame с несколькими строками. Есть ли способ, которым они могут быть объединены в одну строку? - PullRequest
0 голосов
/ 05 апреля 2020
   
        name
    0    md tim
    1    sd mit
    2    jk jason
    3    gk jasim
    4    dr sible
    5    sm amir

Expected output: 


          name
    0    md mit
    1    sd tim
    2    jk jasim
    3    gk jason
    4    dr amir
    5    sm sible

1 Ответ

0 голосов
/ 05 апреля 2020

Если вам нужно то, что вы написали в заголовке этого поста, вы можете выполнить:

' '.join(df.reset_index().values.astype(str).reshape(1, -1).tolist()[0])

В результате вы получите только одну строку со значениями индекса и именами, разделенными с одним пробелом.

Конечно, это решение дает результат, отличный от ожидаемого, но, как вы написали в заголовке, это одна строка.

Редактировать

Чтобы получить ожидаемый результат (фрейм данных со вторым словом, взаимозаменяемым в каждой паре строк):

  1. Определить функцию:

    def exchg(grp):
        tbl = grp.str.split(' ').tolist()
        tbl[0][1], tbl[1][1] = tbl[1][1], tbl[0][1]
        return pd.Series(map(lambda row: ' '.join(row), tbl), index=grp.index)
    
  2. Затем сгруппируйте ваш DataFrame (фактически только имя столбец) в пары и преобразуйте каждую пару, используя вышеуказанную функцию:

    df.name.groupby(np.arange(len(df.index)) // 2).transform(exchg)
    
...