String 使用python处理列中的多个值
我不熟悉python中的pandas和pivot函数,需要一些帮助 如何使用python或pivot表将此表转换为以下输出: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
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
列中NONaN
值:
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
列中NONaN
值:
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。请解释-为什么我们需要在第一步重命名,并在第二步删除和重命名。