2016-08-02 49 views
4

版本信息:如何重新索引多列

print(sys.version) 
3.5.1 |Anaconda 4.1.0 (64-bit)| (default, Jun 15 2016, 15:29:36) [MSC v.1900 64 bit (AMD64)] 

我有一个看起来像这样(纬度和经度是多列)在数据帧列:

+------------+---------------+--------------+--------------+ 
| CustomerId | StreetAddress | Latitude | Longitude | 
+------------+---------------+-------+------+-------+------+ 
|       | count | mean | count | mean | 
+----------------------------+-------+------+-------+------+ 

我想获得这样的:

+------------+---------------+-----------+----------+-----------+----------+ 
| CustomerId | StreetAddress | Lat_count | Lat_mean | Lon_count | Lon_mean | 
+------------+---------------+-----------+----------+-----------+----------+ 

我尝试这样做:

newColumns = ['CustomerId','StreetAddress','Lat_count','Lat_mean','Lon_count','Lon_mean'] 
data2 = data1.reindex(columns=newColumns) 

但这绝对没有用!我结束了一些疯狂的多级列,newColumns中每个字符串的每个字母都是一个新的级别。

更新

这里是我的专栏

data1.columns.to_series() 

CustomerId     (CustomerId,) 
StreetAddress   (StreetAddress,) 
Latitude  count  (Latitude, count) 
       mean  (Latitude, mean) 
Longitude  count (Longitude, count) 
       mean  (Longitude, mean) 
+0

我试图找出如果'CustomerId'和'StreetAddress'是列或一部分该指数。你可以运行'print data1.columns.to_series()'并将其发布到你的问题中吗?谢谢 – piRSquared

+0

@piRSquared他们是专栏。看到我更新的答案。 –

+0

完美,我的解决方案应该工作得很好。 – piRSquared

回答

3

这将这样的伎俩:

data2 = pd.DataFrame(data1.values, columns=newColumns) 

而且也是这样:

data1.columns = newColumns 
+0

谢谢。显然我是在过度复杂的情况下。 –