Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将dataframe列中的文本值拆分为induvial列时出错_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

在python中将dataframe列中的文本值拆分为induvial列时出错

在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:列的长度必须与键的长度相同 *

我有下面这样的数据框,我想拆分并创建两个独立的列

Mycode

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)
结果: