我有一个格式列表:
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方式吗?
答案 0 :(得分:7)
这是单程
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
答案 1 :(得分:4)
您可以使用词典理解,例如:
output$queryTable = renderTable ({
if(is.null(values$data$mat)) return(NULL)
df[c("XLOC_005722", "XLOC_001942", "XLOC_001107"), ] #hardcoded
})
<{3>}中的或:
pd.DataFrame({k:v for k,*v in tuples})
<{3>}中的。
生成:
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
再次在python-3.x或python-2.7:
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])
答案 2 :(得分:0)
如果元组中的值按行排列,则
df = pd.DataFrame(tuples, columns=tuples[0])[1:]