使用数据框列值作为列名

时间:2019-07-02 06:55:12

标签: python pandas dataframe

我遇到问题。我有一个数据框,如下所示:

                  test_index test-item test_value
Serial_Number                                 
SN_0                    1         A      A-0.1
SN_0                    1         B      B-0.1
SN_0                    2         A      A-0.2
SN_0                    2         B      B-0.2
SN_1                    3         A      A-0.3
SN_1                    3         B      B-0.3
SN_1                    4         A      A-0.4
SN_1                    4         B      B-0.4
SN_3                    5         A      A-0.5
SN_3                    5         B      B-0.5
SN_3                    6         A      A-0.6
SN_3                    6         B      B-0.6

我想要一个如下所示的数据框:

Serial_Number       test_index             A           B              
SN_0                    1               A-0.1       B-0.1
SN_0                    2               A-0.2       B-0.2
SN_1                    3               A-0.3       B-0.3
SN_1                    4               A-0.4       B-0.4
SN_3                    5               A-0.5       B-0.5
SN_3                    6               A-0.6       B-0.6

我尝试使用dataframe.unstack()dataframe.reset_index(),但失败了。

1 个答案:

答案 0 :(得分:3)

您可以将DataFrame.set_index var map; var places; var markers = []; var iw_map; var markers_map = new Array(); function initialize() { geocoder = new google.maps.Geocoder(); var latlngCenter = new google.maps.LatLng(25.1999721, 66.8354386); iw_map = new google.maps.InfoWindow(); var mapOptions = { center: latlngCenter, zoom: 7, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); fetchPlaces(); fitMapToBounds_map(); } function fetchPlaces(cityId = null, hubId = null, riderId = null) { clearMarkers(); $.ajax({ url: '{{ route('get-markers') }}', method:'POST', data: {'city_id': cityId, hub_id: hubId, rider_id: riderId}, dataType: 'json', cache: false, success: function(data) { // console.log(markers); var markerz = data.markers; // clearMarkers(); $.each(markerz, function (i, dt) { var marker_icon = {url: dt.icon}; var position = new google.maps.LatLng(dt.lat,dt.lng); var marker = new google.maps.Marker({ map: map, position: position, icon: marker_icon }); // newcoordinate = new google.maps.LatLng(dt.lat,dt.lng); google.maps.event.addListener(marker, "click", function(event) { $.ajax({ url: '{{ route('get-marker-info') }}', method:'POST', data: JSON.parse(dt.params), success: function(data) { iw_map.setContent(data.infoBox); iw_map.open(map, marker); } }); }); markers.push(marker.getPosition()); markers_map.push(marker); }); // fitMapToBounds_map(); } }); } function fitMapToBounds_map() { var bounds = new google.maps.LatLngBounds(); if (markers.length>0) { for (var i=0; i<markers.length; i++) { console.log(markers[i]); bounds.extend(markers[i]); } map.fitBounds(bounds); } } function clearMarkers() { for (var i = 0; i < markers_map.length; i++) { markers_map[i].setMap(null); } markers_map = []; } function loadScript_map() { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=false&v=3&libraries=places&callback=initialize"; document.body.appendChild(script); } window.onload = loadScript_map; setInterval(fetchPlaces, 5000); 参数结合使用,然后再结合使用unstack。然后使用reset_indexDataFrame.droplevel清理格式。

注意-我相信append=True是熊猫droplevel或更高版本的方法,因此这将需要最新版本的熊猫。

0.24.0

[出]

(df.set_index(['test_index', 'test-item'], append=True)
 .unstack(level=2)
 .reset_index(col_level=1)
 .droplevel(0, axis=1))