![](/img/trans.png)
[英]How to convert a list of lists into a dataframe where first element is index, second is column name
[英]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})
在python-3.x中 ,或者:
pd.DataFrame({t[0]: t[1:] for t in tuples})
在python-2.7中 。
產生:
>>> 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])
再次在python-3.x或python-2.7中 :
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.