Pandas用逗号将列拆分成多列

Ane*_*tin 13 python csv split dataframe pandas

我试图根据逗号/空格分隔将列拆分为多个列.

我的数据框目前看起来像

     KEYS                                                  1
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420, 4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490, 4000.0499, 4000.0500, 4000.0504,
Run Code Online (Sandbox Code Playgroud)

我想要

   KEYS                                                  1           2            3        4 
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420  4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490  4000.0499  4000.0500  4000.0504 
Run Code Online (Sandbox Code Playgroud)

我的代码目前删除了KEYS列,我不知道为什么.任何人都可以改进或帮助解决问题吗?

v = dfcleancsv[1]

#splits the columns by spaces into new columns but removes KEYS?

dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
Run Code Online (Sandbox Code Playgroud)

Ant*_*y R 21

如果其他人想要将单个列(带有嵌入式列表,用逗号分隔)分成多个列(没有pd.concat) - 试试这个:

series.str.split(',', expand=True)
Run Code Online (Sandbox Code Playgroud)

这回答了我来这里寻找的问题.


Ane*_*tin 11

使用 Edchums 的答案

pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)
Run Code Online (Sandbox Code Playgroud)

我能够通过替换我的变量来解决它。

dfcleancsv = pd.concat([dfcleancsv['KEYS'], dfcleancsv[1].str.split(', ', expand=True)], axis=1)
Run Code Online (Sandbox Code Playgroud)


Pau*_*eux 8

OP 具有可变数量的输出列。在固定数量的输出列的特殊情况下,另一个命名结果列的优雅解决方案是使用多重分配。

加载示例数据集并将其整形为长格式以获得名为 的变量organ_dimension

import seaborn
iris = seaborn.load_dataset('iris')
df = iris.melt(id_vars='species', var_name='organ_dimension', value_name='value')
Run Code Online (Sandbox Code Playgroud)

拆分organ_dimension变量2个变量organdimension基于该_分离器。

df[['organ', 'dimension']] = df['organ_dimension'].str.split('_', expand=True)
df.head()

Out[10]: 
  species organ_dimension  value  organ dimension
0  setosa    sepal_length    5.1  sepal    length
1  setosa    sepal_length    4.9  sepal    length
2  setosa    sepal_length    4.7  sepal    length
3  setosa    sepal_length    4.6  sepal    length
4  setosa    sepal_length    5.0  sepal    length
Run Code Online (Sandbox Code Playgroud)

基于这个答案 “如何将一列拆分为两列?”


Joe*_*chi 5

最简单的使用方法是矢量化

df = df.apply(lambda x:pd.Series(x))
Run Code Online (Sandbox Code Playgroud)