Создание строки из панд DataFrame - PullRequest
5 голосов
/ 07 апреля 2019

У меня есть pandas DataFrame, который выглядит следующим образом:

 Name  Number    Description
 car   5         red

И мне нужно сделать из него строку, которая выглядит следующим образом:

"""Name: car

Number: 5 

Description: red"""

Я новичок, и я действительно не понимаю, как мне это сделать? Возможно, позже мне понадобится применить это к некоторым аналогичным фреймам данных.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Вы можете использовать iterrows для итерации по строкам данных, в каждой строке вы можете получить столбцы и распечатать результат так, как вы хотите. Например:

import pandas as pd

dtf = pd.DataFrame({
    "Name": ["car", "other"],
    "Number": [5, 6],
    "Description": ["red", "green"]
})

def stringify_dataframe(dtf):
    text = ""
    for i, row in dtf.iterrows():
        for col in dtf.columns.values:
            text += f"{col}: {row[col]}\n"
        text += "\n"
    return text

s = stringify_dataframe(dtf)

Теперь s содержит следующее:

>>> print(s)
Name: car
Number: 5
Description: red

Name: other
Number: 6
Description: green
1 голос
/ 07 апреля 2019

Итерации по фрейму данных быстрее при использовании apply.

import pandas as pd

df = pd.DataFrame({
    "Name": ["car", "other"],
    "Number": [5, 6],
    "Description": ["red", "green"]
})

s = '\n'.join(
        df.apply(
            lambda row: 
            '\n'.join(f'{head}: {val}' for head, val in row.iteritems()),
            axis=1))

Конечно, для этого небольшого набора данных цикл for выполняется быстрее, но на моей машине набор данных с 10 строками уже былобрабатывается быстрее.

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