【发布时间】:2017-09-14 10:55:48
【问题描述】:
- 我有一个包含大量值(259 行 × 27 列)的大型数据框(通过 pandas 从 csv 文件导入)。该指数是从 1996 年 1 月到 2017 年 7 月的月份。
-
我想按年份对每一列进行排序,例如K37L:1996、1997、1998、1999、2000等; K37M:1996、1997、1998、1999、2000 等。
-
这是我当前的代码:
#Importing CSV import pandas as pd import numpy as np df = pd.read_csv('file.csv', index_col=0, skipinitialspace=True) #Calling a column K37L = df['K37L'] #Filtering this column by year (from 1996 to 2017) K37L96 = K37L.filter(regex = '1996', axis = 0); npK37L96 = np.array(K37L96) ... ... ... K37L17 = K37L.filter(regex = '2017', axis = 0); npK37L17 = np.array(K37L17)
- 这会产生我想要的:K37L filtered by 1996
但是,这是一个乏味的过程,因为我必须输入所有年份和列名才能得到我想要的,这需要很长时间。有没有更快/更优雅的方法来做到这一点?
编辑:这是要求的 df.head() 输出:
K37L K37M K37N K37P K37Q K37R K37S K37T K37U K37V ... \
1996 Jan 78.9 79.4 71.7 36.7 0.0 88.7 94.1 90.7 80.2 98.9 ...
1996 Feb 79.3 81.0 72.7 36.7 0.0 88.7 94.3 90.9 79.8 98.7 ...
1996 Mar 79.8 80.4 72.7 36.7 0.0 89.0 94.6 91.0 79.6 98.6 ...
1996 Apr 80.4 80.7 72.9 36.7 0.0 89.0 94.6 91.3 79.2 97.9 ...
1996 May 80.6 80.7 72.9 36.7 0.0 89.1 94.7 91.9 79.2 96.6 ...
K385 K386 K387 K388 K389 K38A K38B K38C K38D K38E
1996 Jan 70.9 78.7 257.8 83.9 79.7 92.2 73.8 86.4 79.6 74.0
1996 Feb 70.7 78.7 257.2 83.9 79.8 92.6 73.7 86.6 79.9 73.9
1996 Mar 70.9 78.7 257.3 83.9 80.1 92.6 73.8 87.2 80.1 74.0
1996 Apr 70.8 78.9 256.6 83.9 80.4 92.7 73.9 87.9 80.7 74.0
1996 May 70.9 78.9 256.3 83.9 80.5 92.9 73.9 88.0 80.7 74.1
[5 rows x 27 columns]
【问题讨论】:
-
请不要发布您的数据图片。只需将
df.head()的输出复制粘贴为原始文本... -
抱歉,我已将 df.head() 输出添加到主要问题中
标签: python python-3.x pandas numpy dataframe