Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
String 使用python处理列中的多个值_String_Python 2.7_Pandas_Dataframe_Split - Fatal编程技术网

String 使用python处理列中的多个值

String 使用python处理列中的多个值,string,python-2.7,pandas,dataframe,split,String,Python 2.7,Pandas,Dataframe,Split,我不熟悉python中的pandas和pivot函数,需要一些帮助 如何使用python或pivot表将此表转换为以下输出: No class 1 U234 2 U234,U237,U239 3 U238,U239,U234 4 U237,U234 所需输出: No class 1 U234 2 U234 2 U237 2 U239 3 U238 3 U239 3 U234 4 U237 4 U234 您可以将第一列class添加到Da

我不熟悉python中的pandas和pivot函数,需要一些帮助

如何使用python或pivot表将此表转换为以下输出:

No  class
1   U234
2   U234,U237,U239
3   U238,U239,U234
4   U237,U234
所需输出:

No  class
1   U234
2   U234
2   U237
2   U239
3   U238
3   U239
3   U234
4   U237
4   U234
您可以将第一列
class
添加到
DataFrame
,然后使用和创建新的
系列

然后是原始列
和新的
系列

print (df.drop('class', axis=1)
             .join
             (
             df['class']
             .str
             .split(',', expand=True)
             .stack()
             .reset_index(drop=True, level=1)
             .rename('class')           
             ))

   No class
0   1  U234
0   1  U237
1   2  U234
1   2  U237
1   2  U239
2   3  U238
2   3  U239
2   3  U234
3   4  U237
3   4  U234
如果在
class
列中NO
NaN
值:

print (pd.DataFrame([ x.split(',') for x in df['class'].tolist() ])
         .stack()
         .reset_index(drop=True, level=1)
         .rename('class'))
0    U234
0    U237
1    U234
1    U237
1    U239
2    U238
2    U239
2    U234
3    U237
3    U234
Name: class, dtype: object
您可以将第一列
class
添加到
DataFrame
,然后使用和创建新的
系列

然后是原始列
和新的
系列

print (df.drop('class', axis=1)
             .join
             (
             df['class']
             .str
             .split(',', expand=True)
             .stack()
             .reset_index(drop=True, level=1)
             .rename('class')           
             ))

   No class
0   1  U234
0   1  U237
1   2  U234
1   2  U237
1   2  U239
2   3  U238
2   3  U239
2   3  U234
3   4  U237
3   4  U234
如果在
class
列中NO
NaN
值:

print (pd.DataFrame([ x.split(',') for x in df['class'].tolist() ])
         .stack()
         .reset_index(drop=True, level=1)
         .rename('class'))
0    U234
0    U237
1    U234
1    U237
1    U239
2    U238
2    U239
2    U234
3    U237
3    U234
Name: class, dtype: object

df.dtypes说什么
?df.dtypes说什么?谢谢@jezrael。由于某些原因,我得到了如下错误:-->1 print(测试['class'].tolist()]中x的pd.DataFrame([x.split(','))).stack().reset_index(drop=True,level=1)。rename('class'))TypeError:'str'对象不可调用我想您有较旧版本的
pandas
。什么是pd.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。也许我应该升级?是的,我的版本是last-
0.18.1
,它运行得非常好。如果使用
Anaconda
windows
,请在
cmd
-
conda安装中使用
是,它工作正常!再次感谢@jezrael。请解释-为什么我们需要在第一步重命名,在第二步删除并重命名。谢谢@jezrael。由于某些原因,我得到了如下错误:-->1 print(测试['class'].tolist()]中x的pd.DataFrame([x.split(','))).stack().reset_index(drop=True,level=1)。rename('class'))TypeError:'str'对象不可调用我想您有较旧版本的
pandas
。什么是pd.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。也许我应该升级?是的,我的版本是last-
0.18.1
,它运行得非常好。如果使用
Anaconda
windows
,请在
cmd
-
conda安装中使用
是,它工作正常!再次感谢@jezrael。请解释-为什么我们需要在第一步重命名,并在第二步删除和重命名。