簡體   English   中英

將元組列表轉換為dataframe - 其中元組的第一個元素是列名

[英]Convert list of tuples to dataframe - where first element of tuple is column name

我有一個格式列表:

tuples = [('a',1,10,15),('b',11,0,3),('c',7,19,2)]  # etc.

我希望將數據存儲在DataFrame ,格式如下:

      a       b     c      ...  

0     1       11     7     ...   
1     10      0      19    ...  
2     15      3      2     ...   

元組的第一個元素是我希望的列名。

我明白,如果我能通過運行實現我想要的東西:

df = pd.DataFrame(tuples)
df = df.T
df.columns = df.iloc[0]
df = df[1:]

但在我看來,它應該比這更簡單。 這是解決這個問題的更加pythonic的方法嗎?

這是一種方式

In [151]: pd.DataFrame({x[0]:x[1:] for x in tuples})
Out[151]:
    a   b   c
0   1  11   7
1  10   0  19
2  15   3   2

您可以使用字典理解,例如:

pd.DataFrame({k:v for k,*v in tuples})

,或者:

pd.DataFrame({t[0]: t[1:] for t in tuples})

產生:

>>> pd.DataFrame({k:v for k,*v in tuples})
    a   b   c
0   1  11   7
1  10   0  19
2  15   3   2

列將按字母順序排序

如果希望對列進行排序,就像原始內容一樣 ,可以使用columns參數:

pd.DataFrame({k:v for k,*v in tuples},columns=[k for k,*_ in tuples])

再次在

pd.DataFrame({t[0]: t[1:] for t in tuples},columns=[t[0] for t in tuples])

我們可以將這一點縮短為:

from operator import itemgetter

pd.DataFrame({t[0]: t[1:] for t in tuples},columns=map(itemgetter(0),tuples))

暫無
暫無

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

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