没有找到解决我问题的办法。
在我的数据集中,我有一个气象事件专栏。我需要将它转换为多个数字列指示符。我在寻找快速解决方案
weather = pd.read_csv("weather.csv", parse_dates=[0])
事件列如下所示:
id Events
0 Rain
...
1 Rain
...
8 Fog-Rain
9 Rain-Snow
我需要将其转换为4个功能:
events = ['Rain','Snow','Fog','Thunderstorm']
每个可以取2个值-1或0。
我怎么能用熊猫呢?
最佳答案
str.get_dummies
处理得非常干净:
import pandas as pd
events_list = ['Rain', 'Rain', 'Fog-Rain', 'Rain-Snow', 'Thunderstorm', 'Fog-Thunderstorm']
weather_df = pd.DataFrame(events_list, columns=['Events'])
print(weather_df)
输出:
Events
0 Rain
1 Rain
2 Fog-Rain
3 Rain-Snow
4 Thunderstorm
5 Fog-Thunderstorm
我们使用
str.get_dummies
并将其连接到原始数据帧:weather_df = pd.concat([weather_df, weather_df.Events.str.get_dummies(sep='-')], axis=1)
print(weather_df)
输出:
Events Fog Rain Snow Thunderstorm
0 Rain 0 1 0 0
1 Rain 0 1 0 0
2 Fog-Rain 1 1 0 0
3 Rain-Snow 0 1 1 0
4 Thunderstorm 0 0 0 1
5 Fog-Thunderstorm 1 0 0 1
如果你愿意的话,可以很容易地删除原来的列。
关于python - Pandas 将列拆分为多个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33707195/