用pandas DataFrame制作字符串

时间:2019-04-06 23:06:54

标签: python python-3.x pandas dataframe sklearn-pandas

我有一个看起来像这样的pandas DataFrame:

 Name  Number    Description
 car   5         red

我需要用它做成一个像这样的字符串:

"""Name: car

Number: 5 

Description: red"""

我是一个初学者,我真的不知道该怎么做?稍后我可能需要将其应用于一些类似的DataFrame。

3 个答案:

答案 0 :(得分:2)

您可以使用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 :(得分:1)

使用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行的数据集已被更快地处理。

答案 2 :(得分:0)

另一种方法,

import pandas as pd

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


for row_index in range(len(dtf)):
    for col in dtf.columns:
        print(f"{col}: {dtf.loc[row_index, col]}")
Name: car
Number: 5
Description: red
Name: other
Number: 6
Description: green

[Program finished]