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

Python 按列名对数据帧进行排序,保持前3列不变,python,pandas,dataframe,multiple-conditions,Python,Pandas,Dataframe,Multiple Conditions,我有一个dataframe,列为 [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' 20

我有一个dataframe,列为

[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']

如何操作。

我认为您需要铸造
日期
列,如果需要
日期
使用:

样本:

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]
如果需要相同的格式,请添加:


你试过什么?还有,为什么你会用看起来像日期的列名?而
hash
是从哪里来的呢?
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]
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]