如何解决如何将pandas.core.frame.DataFrame转换为列表?
这是我的csv文件中的
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 举报,一经查实,本站将立刻删除。