熊猫拆开单列

时间:2016-03-15 11:26:55

标签: python pandas

任何建议在不删除任何列的情况下将private const string Format = "yyyy-MM-dd hh:mm:ss.fff"; public object ValidDate(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.Value == null) { return null; } var s = reader.Value.ToString(); DateTime result; if (DateTime.TryParseExact(s, Format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result)) { return result; } return DateTime.Now; } 取消堆叠?

原始数据框如下所示:

column=periodo_dia

所需的数据框应该是:

|   | year | month | day | periodo_dia | valor_medida | Score_recogida |
|---|------|-------|-----|-------------|--------------|----------------|
| 0 | 2015 | 4     | 18  | manana      | 25.0         | 8.166667       |
| 1 | 2015 | 4     | 18  | noche       | 47.5         | 0.000000       |
| 2 | 2015 | 4     | 18  | tarde       | 20.0         | 0.000000       |
| 3 | 2015 | 4     | 19  | manana      | 0.0          | 0.000000       |
| 4 | 2015 | 4     | 19  | noche       | 0.0          | 4.066667       |

2 个答案:

答案 0 :(得分:5)

您可以将get_dummiesastype一起用于将值转换为integerdropconcat

df1 = pd.get_dummies(df['periodo_dia']).astype(int)
print df1
   manana  noche  tarde
0       1      0      0
1       0      1      0
2       0      0      1
3       1      0      0
4       0      1      0

#drop column periodo_dia
df = df.drop('periodo_dia',axis=1)

print pd.concat([df, df1], axis=1)
   year  month  day  valor_medida  Score_recogida  manana  noche  tarde
0  2015      4   18          25.0        8.166667       1      0      0
1  2015      4   18          47.5        0.000000       0      1      0
2  2015      4   18          20.0        0.000000       0      0      1
3  2015      4   19           0.0        0.000000       1      0      0
4  2015      4   19           0.0        4.066667       0      1      0

答案 1 :(得分:0)

讨厌回答我自己的问题,但希望它可以帮助别人。这样做的任务:

df = pandas.concat([df.drop('periodo_dia',axis=1),
                    pandas.get_dummies(df['periodo_dia'])],axis=1)