解析列列表到pandas DataFrame以仅显示这些列
我知道在使用pandas的时候,如果你有一个数据框(df),你可以通过df.columns.values来获取列名,这会返回一个对象(我不太确定是什么类型),但你可以把它转换成字符串。
如果我的数据框有10列,而我知道前面三列的名字,我能不能创建一个字符串,然后把它解析到数据框中,只显示那些列呢?
subset_columns['one','two','three']
df[[subset_colimns]]
df OUT >>
one | two | three
1345 415 1654
13445 56576 76r76
2 个回答
0
是的,你可以选择需要的列。
df = pd.read_csv("../SO/data.csv")
df.head()
card_number effective_date expiry_date grouping_name Ac. Year code
0 1206090 28 Sep 2012 21 Aug 2013 Dummy no.1 201213
1 1206090 21 Feb 2013 21 Aug 2013 Dummy no.2 201213
2 1206090 28 Sep 2012 30 Nov 2012 Dummy no.3 201213
3 1206090 03 Dec 2012 21 Aug 2013 Dummy no.3 201213
4 1206090 23 Apr 2013 31 Aug 2013 Dummy no.4 201213
req_cols 是下面需要的列的列表:
req_cols = ['card_number', 'expiry_date', 'grouping_name']
df[req_cols].head()
card_number expiry_date grouping_name
0 1206090 21 Aug 2013 Dummy no.1
1 1206090 21 Aug 2013 Dummy no.2
2 1206090 30 Nov 2012 Dummy no.3
3 1206090 21 Aug 2013 Dummy no.3
4 1206090 31 Aug 2013 Dummy no.4
1
你可以通过转换或者使用numpy的tolist()
函数把列转换成一个列表。然后你可以像平常一样通过切片来选择其中的内容:
In [5]:
import pandas as pd
df = pd.DataFrame(dict(zip(list('abcdefghij'), [arange(10)] * 10)))
cols = df.columns.values.tolist()
# you can also do list(df.columns)
In [11]:
cols
Out[11]:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
In [12]:
subcols = cols[2:5]
df[subcols]
Out[12]:
c d e
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
[10 rows x 3 columns]
如果你想选择多个不连续的列,可以这样做:
In [36]
part1 = cols[0:3]
part2 = cols[6:8]
subcols = part1+part2
df[subcols]
Out[36]:
a b c g h
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7
8 8 8 8 8 8
9 9 9 9 9 9
[10 rows x 5 columns]