在python中将dataframe列中的文本值拆分为induvial列时出错
我有下面这样的数据框,我想拆分并创建两个独立的列 Mycode在python中将dataframe列中的文本值拆分为induvial列时出错,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有下面这样的数据框,我想拆分并创建两个独立的列 Mycode df['data'] =['cricket:sachin,football:messi,cricket:lara,tennis:nadal,tennis:serina'] df[["L1", "L2"]] = df["data"].str.split(pat=",", expand=True) 错误 ValueError:列的长度必须与键的长度相同 *
df['data'] =['cricket:sachin,football:messi,cricket:lara,tennis:nadal,tennis:serina']
df[["L1", "L2"]] = df["data"].str.split(pat=",", expand=True)
错误
ValueError:列的长度必须与键的长度相同
**Expected Output**
L1 L2
cricket sachin
football messi
cricket lara
tennis nadal
tennis serina
如何做到这一点?试试:
df['data'].str.split(',', expand=True).melt()['value']\
.str.split(':', expand=True).rename(columns={0:'L1', 1:'L2'})
输出:
L1 L2
0 cricket sachin
1 football messi
2 cricket lara
3 tennis nadal
4 tennis serina
L1 L2
0 cricket sachin
1 football messi
2 cricket lara
3 tennis nadal
4 tennis serina
详情:
首先在“,”上拆分字符串,使用expand=True获取数据帧,然后将列合并为行,并在“:”上拆分值列,然后重命名列标题。您还可以执行以下操作:
(df["data"].str.split(',')
.explode()
.str.split(':', expand=True)
.rename(columns={0: 'L1', 1: 'L2'})
).reset_index(drop=True)
结果: