python - Pandas:如何通过分隔符将一列拆分为多列?
问题描述
我有一个数据框:
df ={'date' : ['2020-08-05', '2020-08-05', '2020-08-05'], 'values_a':['jbl_1;jbl2', 'jbl44;jbl441;imax76;wer43', 'macbook12;iphone43;micromax12;ios11'], 'types' : ['connector1','connector1','connector1'], 'connection' : ['working','working','working']}
df = pd.DataFrame(df)
date values_a types connection
0 2020-08-05 jbl_1;jbl2 connector1 working
1 2020-08-05 jbl44;jbl441;imax76;wer43 connector1 working
2 2020-08-05 macbook12;iphone43;micromax12;ios11 connector1 working
我在找什么:
我想使用分隔符拆分 values_a 列并制作额外的列:
我试过的:
def generate_one_hot(df):
# make a list of all unique columns values
all_columns = reduce(operator.concat,[column.split(';') for column in df['values_a']])
# fill one hot values
all_values = [[1 if column_name in value else 0 for value in df['values_a']] for column_name in all_columns]
# map it
dataframe = pd.DataFrame({col_name:col_val for col_name, col_val in zip(all_columns,all_values)})
return pd.concat([df,dataframe],1)
哪个在做这项工作,如何使用本机 pandas 函数优化此代码?
解决方案
我试过这个get_dummies
,它正在解决:
one_hot = pd.concat([df,df.values_a.str.get_dummies(sep=';')],1)
推荐阅读
- javascript - 如何在 owl carousel 的屏幕上显示上一个和下一个滑块的一半?
- python - Unicode:当作为 CGI 运行时,Python 3 在 Ubuntu 上忽略 LC_CTYPE
- jquery - 如果必填文本框为空,则发出警报
- python-2.7 - 在 CENTOS 7 中启动启动 REDHAWK Domain Mgr、Device Mgr 和 Waveform
- cqrs - 是否可以在 prooph cqrs 中只为事件源创建一个动态表?
- sharepoint - 从 SharePoint 中删除文本
- javascript - Angular 生产无法在网站上运行
- html - 如何在网站上使用基于表单的登录来实现不同的领域?
- angular - Angular 多显示器应用程序
- if-statement - Streamlabs Chatbot 对 if else "request" 执行响应