【问题标题】:Making a string out of pandas DataFrame用 pandas DataFrame 制作一个字符串
【发布时间】:2019-08-28 11:16:11
【问题描述】:

我有 pandas DataFrame,它看起来像这样:

 Name  Number    Description
 car   5         red

我需要用它制作一个字符串,如下所示:

"""Name: car

Number: 5 

Description: red"""

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

【问题讨论】:

  • 如果数据框中有多个条目,应该显示什么?
  • 然后我必须以某种方式只打印一行的信息。例如,我有行“car1”、“car2”、“car3”。如果用户键入“car1”,我需要打印 car1 行

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


【解决方案1】:

另一种方法,

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]

【讨论】:

    【解决方案2】:

    使用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 行的数据集已经更快了。

    【讨论】:

    • for i in range (len (dtf)): print(f'{dtf.loc[i]}\n')for row in dtf.to_string(index = False).split('\n'): print(row) 也可以使用,但不是作者要求的。
    【解决方案3】:

    您可以使用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
    

    【讨论】:

    • 非常感谢!但是我可以以某种方式将它放在一个字符串中,这样我就可以将它用作不同需求的变量
    • 是的,当然,我会更新我的答案(你需要每个条目一个字符串还是一个大字符串?)
    • 我需要一根大绳子
    猜你喜欢
    • 2020-12-23
    • 2012-10-01
    • 2021-12-28
    • 2020-05-20
    • 2017-06-06
    • 2021-10-27
    • 2017-01-28
    相关资源
    最近更新 更多