Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pandas.core.frame.DataFrame转换为列表?_Python_Pandas_Dataframe_Csv_Prettytable - Fatal编程技术网

Python 如何将pandas.core.frame.DataFrame转换为列表?

Python 如何将pandas.core.frame.DataFrame转换为列表?,python,pandas,dataframe,csv,prettytable,Python,Pandas,Dataframe,Csv,Prettytable,这是我的csv文件中的。这是因为我想将头C中具有“happy”值的所有头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.

这是我的csv文件中的。这是因为我想将头C中具有“happy”值的所有头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
有没有什么方法可以将输出头的数据放入一个列表并存储在一个变量中

和行一样,我也希望它制作一个列表并将其存储在一个变量中

(像这样):

作为最终输出,我想要的是一个漂亮的表格

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  |
+----------+----------+----------+----------+----------+

多谢各位

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

df.to_dict('split')
你可以做:

# 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]

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

我可能会采用以下解决方案:

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)
Pandas在DataFrame类上提供迭代器以访问数据帧,例如逐行访问。我们应该做到这一点

它在数据帧上迭代,并为您提供(column_name,values)元组,其中column_name为str类型,values为type。 要以列表形式返回序列的值,可以使用

下面是一个可能的解决方案的大致示意图:

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)
或者,当您有许多列并且不想手动列出它们时,可以使用迭代:

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

谢谢你,先生,你的回答节省了我的时间。这对我很有用
table = PrettyTable()
table.field_names = df[next(iter(df.columns))].tolist()
for col in df.columns:
  table.add_row(df[col].tolist())