来自Pandas的DataFrame的系列列表

时间:2015-10-01 18:48:38

标签: python 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值。

2 个答案:

答案 0 :(得分: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 :(得分:0)

另一种方式:

columns, columnSeries = zip(*df.iteritems())

并以行的形式获取行:

indices, rowSeries = zip(*df.iterrows())