是否有一种方法可以从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 :(得分: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())