【问题标题】:need to split dataframe columns using comma delimited需要使用逗号分隔数据框列
【发布时间】:2020-09-07 08:56:20
【问题描述】:

我有一个类似列的数据框,

comments
misha,park@gmail.com,233432
ammesh,,3545657
",,,"
neta,ne34@gmail.com,,

我想使用逗号进行拆分,当两个逗号连续出现时需要将该列填充为 NA。当出现三个逗号时需要将所有三列填充为NA(如第三行)

EXPECTED OUTPUT :
comments                              name          mail             phone
misha,park@gmail.com,233432          misha      park@gmail.com      233432
ammesh,,3545657                      ammesh          NA             3545657
",,,"                                 NA             NA               NA
neta,ne34@gmail.com,,                neta       ne34@gmail.com        NA

使用的代码:

b = a.join(a['comments'].str.split(',', expand=True).add_prefix('comments')).fillna(np.nan)

【问题讨论】:

  • 你的数据集大吗?它可以与简单的循环一起使用吗?

标签: python dataframe split


【解决方案1】:

如果你找不到更 Pythonic 的东西,下面的代码应该可以正常工作。我试图涵盖',,'外观的所有场景:

a['name']=''
a['mail']=''
a['phone']=''

for i in range(len(a)):
    if ',,' not in a.comments.iloc[i] and ',,,' not in a.comments.iloc[i]:
        s=a.comments.iloc[i].split(',')
        a['name'].iloc[i]=s[0]
        a['mail'].iloc[i]=s[1]
        a['phone'].iloc[i]=s[2]
    elif ',,,' in a.comments.iloc[i]:
        a['name'].iloc[i]=np.nan
        a['mail'].iloc[i]=np.nan
        a['phone'].iloc[i]=np.nan   
    else:
        s=a.comments.iloc[i].split(',')
        if len(s)==5:
            a['name'].iloc[i]=np.nan
            a['mail'].iloc[i]=s[2]
            a['phone'].iloc[i]=np.nan 
        if len(s)==4:
            if s[0]=='':
                a['name'].iloc[i]=np.nan
                a['mail'].iloc[i]=s[2]
                a['phone'].iloc[i]=s[3]
            elif s[-1]=='':
                a['name'].iloc[i]=s[0]
                a['mail'].iloc[i]=s[1]
                a['phone'].iloc[i]=np.nan
         if len(s)==3:
             a['name'].iloc[i]=s[0]
             a['mail'].iloc[i]=np.nan
             a['phone'].iloc[i]=s[2]
print(a)

【讨论】:

    猜你喜欢
    • 2013-10-16
    • 2020-05-28
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多