我想将行转换为此数据帧的列,因此在pandas中使用pivot_table操作:
但是,当我执行以下操作时:df_tmp.pivot_table(index='Date', columns='MeasureLabel', values='Value')
,我得到错误:*** pandas.core.base.DataError: No numeric types to aggregate
。数据类型如下:
Date int64
MeasureLabel object
Value object
Value
列包含非数字值,因此不能转换为数字。有没有办法实现我想要的东西?
Date MeasureLabel Value
0 1539262800000000000 Airpressure_Hourly (hPa) 1008.0
1 1539262800000000000 Cloudcover_Hourly (pct) 1
2 1539262800000000000 Dewpoint_Hourly (C) 15.2
3 1539262800000000000 GlobalRadiation_HourlySum (Wh/m2) 259
4 1539262800000000000 HumidityRel_Hourly (pct) 33
5 1539262800000000000 Lightintensity_Hourly (µmol/m²/s) 569.1
6 1539262800000000000 PAR_Hourly (Wh/m2) 124.5
7 1539262800000000000 PictoCode_Hourly 13
8 1539262800000000000 Precip_HourlySum (mm) 0.00
9 1539262800000000000 Precip_RangeMax_HourlySum (mm) 0.0
10 1539262800000000000 Precip_RangeMin_HourlySum (mm) 0.0
11 1539262800000000000 PrecipProbability_Hourly (pct) 0
12 1539262800000000000 Referenceevapotranspiration_HourlySum (mm) 0.2
13 1539262800000000000 ShowerProbability_Hourly (pct) 0
14 1539262800000000000 SnowFraction_Hourly 0.0
15 1539262800000000000 Soilmoisture_0to10cm_Hourly (vol%) 7.0
16 1539262800000000000 Soiltemperature_0to10cm_Hourly (C) 7.0
17 1539262800000000000 SunshineDuration_Hourly (min) 59
18 1539262800000000000 TempAir_Hourly (C) 33.7
19 1539262800000000000 TempAirSurface_Hourly(C) 39.0
20 1539262800000000000 ThunderstormProbability_Hourly (pct) 55
21 1539262800000000000 Visibility_Hourly (m) 35830
22 1539262800000000000 WindDirection_Hourly E
发布于 2018-10-12 08:16:16
由于您不打算执行聚合,因此可以使用pd.pivot
而不是pd.pivot_table
。注pd.pivot
是非常严格的,例如它只允许标量index
/ columns
,但在这种情况下它似乎足够了。
df = pd.DataFrame({'Date': ['20180101']*5,
'Label': ['A', 'B', 'C', 'D', 'E'],
'Value': [1, 2, 3, 4, 'X']})
res = df.pivot(index='Date', columns='Label', values='Value')
print(res)
Label A B C D E
Date
20180101 1 2 3 4 X
https://stackoverflow.com/questions/52770313
复制相似问题