![](/img/trans.png)
[英]How can I extract data as a list from a pandas.core.frame.DataFrame datatype?
[英]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.