Python 需要使用逗号分隔符拆分数据帧列
我有一个数据框列,比如Python 需要使用逗号分隔符拆分数据帧列,python,dataframe,split,Python,Dataframe,Split,我有一个数据框列,比如 comments misha,park@gmail.com,233432 ammesh,,3545657 ",,," neta,ne34@gmail.com,, 我想使用逗号分割,当两个逗号同时出现时,我需要将该列填充为NA。当出现三个逗号时,需要将所有三列填写为NA(如第三行) 使用的代码: b = a.join(a['comments'].str.split(',', expand=True).add_prefix('comments')).fi
comments
misha,park@gmail.com,233432
ammesh,,3545657
",,,"
neta,ne34@gmail.com,,
我想使用逗号分割,当两个逗号同时出现时,我需要将该列填充为NA。当出现三个逗号时,需要将所有三列填写为NA(如第三行)
使用的代码:
b = a.join(a['comments'].str.split(',', expand=True).add_prefix('comments')).fillna(np.nan)
如果您找不到更具python风格的东西,那么下面的代码应该可以正常工作。我试图涵盖“,”外观的所有场景:
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)
你是大的吗?它能与简单的循环一起工作吗?
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)