2015-10-01 220 views
0

是否有一種方法可以從DataFrame中獲取Series的列表?Pandas中的DataFrame中的系列列表

例如,這種方式得到我想要的結果,但我有種感覺,有一個單一的方法來得到這樣的:

In [136]: df=pd.DataFrame(pd.np.random.rand(10,3), columns=list('abc')) 
Out[136]: 
      a   b   c 
0 0.729100 0.102947 0.589687 
1 0.180960 0.514507 0.359253 
2 0.003143 0.353437 0.377803 
3 0.565025 0.983447 0.380672 
4 0.289800 0.256467 0.559850 
5 0.177332 0.049220 0.467654 
6 0.863002 0.325522 0.308502 
7 0.926534 0.327017 0.159471 
8 0.688663 0.934143 0.762619 
9 0.203271 0.862646 0.317251 

In [138]: [item[1] for item in df.items()] 
Out[138]: 
[0 0.052074 
1 0.650355 
2 0.011106 
3 0.499441 
4 0.874509 
5 0.429968 
6 0.869368 
7 0.719732 
8 0.441703 
9 0.653455 
Name: a, dtype: float64, 0 0.431164 
1 0.736769 
2 0.235221 
3 0.452332 
4 0.578849 
5 0.116561 
6 0.679606 
7 0.549857 
8 0.761222 
9 0.468103 
Name: b, dtype: float64, 0 0.850285 
1 0.298383 
2 0.511760 
3 0.485509 
4 0.587351 
5 0.332112 
6 0.230234 
7 0.520007 
8 0.127432 
9 0.692219 
Name: c, dtype: float64] 

df.values()將是匹配方法df.items(),但.values得到numpy的值。

+0

什麼'名單(df.iteritems())'? –

+2

爲什麼你需要這個呢?你可以得到一個列名稱的列表,並使用它們來索引到df,這將返回列值作爲系列呢? – EdChum

+0

如果你想獲得第n列而不是標籤名稱,你總是可以做'df [df.columns [n]]' – benjwadams

回答

1

這將返回一系列的列表。

import pandas as pd 

df = pd.DataFrame(pd.np.random.rand(10,3), columns=list('abc')) 
# get a list of Series from the column names 
series_list = [df[col] for col in df] 
print(series_list) 

打印

[0 0.743692 
1 0.364492 
2 0.133023 
3 0.861350 
4 0.108383 
5 0.058208 
6 0.932846 
7 0.462293 
8 0.305808 
9 0.045466 
Name: a, dtype: float64, 0 0.783904 
1 0.479855 
2 0.407343 
3 0.764235 
4 0.422370 
5 0.076351 
6 0.237434 
7 0.251543 
8 0.600384 
9 0.458412 
Name: b, dtype: float64, 0 0.918281 
1 0.995960 
2 0.329548 
3 0.036124 
4 0.791106 
5 0.420298 
6 0.068579 
7 0.611581 
8 0.173925 
9 0.652559 
Name: c, dtype: float64] 
+1

太棒了。不是一個單一的方法,但比我的更好。 '[df [col] for df]'更加緊密 – Maximilian

+0

好的。我會編輯響應以使其更加友好。 – benjwadams

相關問題