按列名对数据帧进行排序,保持前 3 列不变



>我有列的数据框

[u'Instructor Name', u'Product Name', u'Product Url', u' 2016.12.03',
u' 2016.12.05', u' 2016.12.01', u' 2016.12.12', u' 2016.12.16', 
u'2016.12.15', u' 2016.12.13', u' 2016.12.10', u' 2016.12.06', 
u'2016.12.14',u'2016.12.08', u' 2016.12.07', u' 2016.12.18', 
u'2016.12.11', u' 2016.12.04', u'2016.12.09', u' 2016.12.02', u' 2016.12.17']

我想对列进行排序,但仅限于"产品 URL"中的列。我想要输出

[u'Instructor Name', u'Product Name', u'Product Url',
       u' 2016.12.01', u' 2016.12.02', u' 2016.12.03', u' 2016.12.04',
       u' 2016.12.05', u' 2016.12.06', u' 2016.12.07', u' 2016.12.08',
       u' 2016.12.09', u' 2016.12.10', u' 2016.12.11', u' 2016.12.12',
       u' 2016.12.13', u' 2016.12.14', u' 2016.12.15', u' 2016.12.16',
       u' 2016.12.17', u' 2016.12.18', u' 2016.12.19']

怎么做。

我认为您需要to_datetimesort_values dates列,如果需要dates使用 date

df.columns = df.columns[:3].tolist() + 
            (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().date.tolist()

样本:

cols = [u'Instructor Name', u'Product Name', u'Product Url', u' 2016.12.03', u' 2016.12.05', 
        u' 2016.12.01', u' 2016.12.12', u' 2016.12.16', u' 2016.12.15', u' 2016.12.13', 
        u' 2016.12.10', u' 2016.12.06', u'2016.12.14',u'2016.12.08', u' 2016.12.07', 
        u' 2016.12.18', u' 2016.12.11', u' 2016.12.04', u'2016.12.09',
 u' 2016.12.02', u' 2016.12.17']
df = pd.DataFrame(columns=cols) 
print (df)
Empty DataFrame
Columns: [Instructor Name, Product Name, Product Url,  
          2016.12.03,  2016.12.05,  2016.12.01,  2016.12.12,  2016.12.16,  2016.12.15,  
          2016.12.13,  2016.12.10,  2016.12.06, 2016.12.14, 2016.12.08,  2016.12.07,  
          2016.12.18,  2016.12.11,  2016.12.04, 2016.12.09,  2016.12.02,  2016.12.17]
Index: []
[0 rows x 21 columns]
df.columns = df.columns[:3].tolist() + 
             (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().date.tolist()
print (df)
Empty DataFrame
Columns: [Instructor Name, Product Name, Product Url, 
          2016-12-01, 2016-12-02, 2016-12-03, 2016-12-04, 2016-12-05, 2016-12-06, 
          2016-12-07, 2016-12-08, 2016-12-09, 2016-12-10, 2016-12-11, 2016-12-12, 
          2016-12-13, 2016-12-14, 2016-12-15, 2016-12-16, 2016-12-17, 2016-12-18]
Index: []
[0 rows x 21 columns]

如果需要相同的格式,请添加strftime

df.columns = df.columns[:3].tolist() + 
             (pd.to_datetime(df.columns[3:], format='%Y.%m.%d')).sort_values().strftime('%Y.%m.%d').tolist()
print (df)
Empty DataFrame
Columns: [Instructor Name, Product Name, Product Url, 
          2016.12.01, 2016.12.02, 2016.12.03, 2016.12.04, 2016.12.05, 2016.12.06, 
          2016.12.07, 2016.12.08, 2016.12.09, 2016.12.10, 2016.12.11, 2016.12.12, 
          2016.12.13, 2016.12.14, 2016.12.15, 2016.12.16, 2016.12.17, 2016.12.18]
Index: []
[0 rows x 21 columns]

最新更新