Python 将列列表解析为数据帧以仅显示这些列
我知道,如果您有一个数据帧(df),您可以使用df.columns.values获取列以返回对象(不确定是哪种类型),但您可以将其转换为字符串 如果我的dataframe有10列,并且我知道前三列的名称,那么我可以创建一个字符串,并将其解析到dataframe以仅显示这些列吗Python 将列列表解析为数据帧以仅显示这些列,python,pandas,Python,Pandas,我知道,如果您有一个数据帧(df),您可以使用df.columns.values获取列以返回对象(不确定是哪种类型),但您可以将其转换为字符串 如果我的dataframe有10列,并且我知道前三列的名称,那么我可以创建一个字符串,并将其解析到dataframe以仅显示这些列吗 subset_columns['one','two','three'] df[[subset_colimns]] 您可以通过强制转换或使用numpytolist()函数将列转换为列表。然后,您可以通过正常方式进行切片来选
subset_columns['one','two','three']
df[[subset_colimns]]
您可以通过强制转换或使用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]
是,您可以选择所需的列
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
你能从你的清单上切下i-j,说我想要前四个,然后跳过下两个,再给我三个吗?所以a,b,c,d,g,h?@Yoshisery不简洁地说,你必须做一些类似于
part1=cols[0:3],part2=cols[6:8],subcols=part1+part2,df[subcols]
的事情,因为某种原因,当我这样做时(解析列的子集),它将索引和第一列“加载年”组合在一起,我怎样才能阻止这种情况发生?@yoshiserry:这不应该发生。你能不能再发一个问题,包括再现错误的代码和数据,我可以看一下
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 = ['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