>我有列的数据框
[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_datetime
、sort_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]