首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DataFrame中拆分需要的行

在DataFrame中拆分需要的行
EN

Stack Overflow用户
提问于 2018-08-17 22:06:55
回答 2查看 32关注 0票数 0

我有桌子:

代码语言:javascript
运行
复制
                                   Name1 Name2 Name3
0                                    ABC   FGD   NNY
1  111S  PC  1T  Trees are always yellow   NaN   NaN
2                                      P   FGD   NNY
3                                    JJJ   FGD   NNY
4  111S  PC  1T  Trees are always yellow   NaN   NaN
5                                    ABC   FGD   NNY
6                                    UIK    GJ    DE

我想要得到的是:

代码语言:javascript
运行
复制
  Name1 Name2 Name3                    Name4
0   ABC   FGD   NNY                      NaN
1  111S    PC    1T  Trees are always yellow
2     P   FGD   NNY                      NaN
3   JJJ   FGD   NNY                      NaN
4  111S    PC    1T  Trees are always yellow
5   ABC   FGD   NNY                      NaN
6   UIK    GJ    DE                      NaN

我只需要拆分一些行,其他行不应该改变。我能够确定需要拆分数据的行:

代码语言:javascript
运行
复制
if df[colname1].isnull:
    df_index=df[df[colname1].isnull()].index
    print(df_index)

现在需要在字符串中分隔值​​。我得到了一些类似的东西:

代码语言:javascript
运行
复制
if df[colname1].isnull:
df_index=df[df[colname1].isnull()].index
print(df_index)

for i in df_index:
    print(i)
    df1=df[colname][i].split('     ')

df1是包含我所需信息的字符串,但我不知道如何将此信息放入所需索引中的DataFrame df中。你能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-17 22:15:59

n中使用str.split

代码语言:javascript
运行
复制
s=df.fillna('').apply('  '.join,1)
s.str.split('  ',n=3)
Out[189]: 
0                                [ABC, FGD, NNY]
1    [111S, PC, 1T, Trees are always yellow    ]
2                                  [P, FGD, NNY]
3                                [JJJ, FGD, NNY]
4    [111S, PC, 1T, Trees are always yellow    ]
5                                [ABC, FGD, NNY]
6                                  [UIK, GJ, DE]
dtype: object
pd.DataFrame(s.str.split('  ',n=3).tolist())
Out[190]: 
      0    1    2                            3
0   ABC  FGD  NNY                         None
1  111S   PC   1T  Trees are always yellow    
2     P  FGD  NNY                         None
3   JJJ  FGD  NNY                         None
4  111S   PC   1T  Trees are always yellow    
5   ABC  FGD  NNY                         None
6   UIK   GJ   DE                         None
票数 1
EN

Stack Overflow用户

发布于 2018-08-17 22:21:32

IIUC你有一个双空格来分隔你的列,在你的句子中有一个空格。您可以使用它来执行拆分。

代码语言:javascript
运行
复制
idx = df.loc[df.Name2.isnull()].index
df['Name4'] = np.nan
df.loc[idx] = df.loc[idx].Name1.str.split('  ',expand = True).values

    Name1   Name2   Name3   Name4
0   ABC     FGD     NNY     NaN
1   111S    PC      1T      Trees are always yellow
2   P       FGD     NNY     NaN
3   JJJ     FGD     NNY     NaN
4   111S    PC      1T      Trees are always yellow
5   ABC     FGD     NNY     NaN
6   UIK     GJ      DE      NaN
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51897182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档