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

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

这是我的csv文件中的。这是因为我想将标头C中所有具有“快乐”值的标头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

有什么办法可以将输出Header放入列表并将其存储在变量中?

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

(像这样):

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

非常感谢您!

解决方法

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

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

有两种方法可以解决您的问题。

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

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

它遍历您的数据框,并为您提供(列名称,值)的元组,其中列名称为 str 类型,而值为 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)
,
onClick

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

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","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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?