簡體   English   中英

如何將 pandas.core.frame.DataFrame 轉換為列表?

[英]How can i convert pandas.core.frame.DataFrame to a list?

這是我的 csv 文件中的 <class 'pandas.core.frame.DataFrame'>。 這是因為我想將所有在 Header C 中具有“happy”值的 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  |
+----------+----------+----------+----------+----------+

非常感謝!

嘿,您可以將數據框轉換回字典,然后訪問您描述的所有列表:

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()應該可以解決問題。

它遍歷您的數據框並為您提供 (column_name, values) 的元組,其中 column_name 是str類型,values 是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)
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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM