【问题标题】:How can i convert pandas.core.frame.DataFrame to a list?如何将 pandas.core.frame.DataFrame 转换为列表?
【发布时间】:2021-01-14 04:04:07
【问题描述】:

这是我的 csv 文件中的 。这是因为我想将所有在 Header C 中具有“快乐”值的 Header A 分组

print(df.loc[df["Header C"] == "happy"])

这是输出:

    Header A    Header B    Header C   Header D    Header E
0     rowa.a      rowa.c       happy     rowa.d      rowa.e
3     rowc.a      rowc.c       happy     rowd.d      rowc.e
5     rowe.a      rowe.c       happy     rowe.d      rowe.e

有什么方法可以将输出的标题变成一个列表并将其存储在一个变量中?

与行相同,我也希望它创建一个列表并将其存储在一个变量中。

(像这样):

a = ["Header A", "Header B", "Header C", "Header D", "Header E"]
n = ["rowa.a", "rowa.c", "happy", "rowa.d", "rowa.e"]
o = ["rowc.a", "rowc.c", "happy", "rowc.d", "rowc.e"]

我想要的最终输出是漂亮的

from prettytable import PrettyTable
x = PrettyTable()
x.field_names = a
x.add_row(n)
x.add_row(o)
print(x)

以及这个的输出:

+----------+----------+----------+----------+----------+
| Header A | Header B | Header C | Header D | Header E |
+----------+----------+----------+----------+----------+
|  rowa.a  |  rowa.c  |  happy   |  rowa.d  |  rowa.e  |
+----------+----------+----------+----------+----------+

非常感谢!

【问题讨论】:

    标签: python pandas dataframe csv prettytable


    【解决方案1】:

    您可以将数据框转换回字典,然后访问您描述的所有列表:

    df.to_dict('split')
    

    【讨论】:

    • 谢谢你先生,你的回答节省了我的时间。它对我有用
    【解决方案2】:

    你可以这样做:

    # get header and df values
    all_rows = [df.columns.tolist()] + df.to_numpy().tolist()
    
    # get each rows (or you can loop through all_rows)
    a = all_rows[0]
    n = all_rows[1]
    o = all_rows[1]
    

    【讨论】:

      【解决方案3】:

      有几种不同的方法可以解决您的问题。

      我可能会选择这个解决方案:

      Pandas 在 DataFrame 类上提供迭代器来访问数据帧,例如逐行。 DataFrame.iteritems() 应该可以解决问题。

      它遍历您的数据框并为您提供 (column_name, values) 的元组,其中 column_name 的类型为 str,值的类型为 Series。 要将 Series 的值作为列表返回,可以使用 Series.tolist()

      这是一个可能的解决方案的粗略草图:

      import pandas as pd
      
      
      df = pd.DataFrame({
          "Header A:" : ["foo_a","bar_a","baz_a"],
          "Header B:" : ["foo_b","bar_b","baz_b"],
          "Header C:" : ["foo_c","bar_c","baz_c"]
      })
      
      
      for column,values in df.iteritems():
          print(column)
          print(values.tolist)
      

      【讨论】:

        【解决方案4】:
        from prettytable import PrettyTable
        import pandas as pd
        
        # create dataframe
        df = pd.DataFrame({
            'a': ["Header A", "Header B", "Header C", "Header D", "Header E"],
            'n': ["rowa.a", "rowa.c", "happy", "rowa.d", "rowa.e"],
            'o': ["rowc.a", "rowc.c", "happy", "rowc.d", "rowc.e"]
        })
        
        # create pretty table
        table = PrettyTable()
        table.field_names = df['a'].tolist()
        table.add_row(df['n'].tolist())
        table.add_row(df['o'].tolist())
        
        print(x)
        

        或者,当您有很多列并且不想手动列出它们时,可以使用迭代:

        table = PrettyTable()
        table.field_names = df[next(iter(df.columns))].tolist()
        for col in df.columns:
          table.add_row(df[col].tolist())
        

        【讨论】:

          猜你喜欢
          • 2023-04-02
          • 1970-01-01
          • 2019-06-01
          • 2022-02-21
          • 2017-01-21
          • 2016-05-04
          • 1970-01-01
          • 1970-01-01
          • 2018-05-26
          相关资源
          最近更新 更多