如何在Python中以正确的方式将列拆分为2?

时间:2017-10-02 11:18:07

标签: python pandas dataframe split debian

我是网站上的网页抓取表,我将它放到Excel文件中。我的目标是以正确的方式将列拆分为2列。

我要拆分的列:“状态”

我想要这个表格:

第一个例子:估计下午3:17 - >预计和下午3:17

第二个例子:延迟3:00 PM - >延迟和下午3:00

第三个例子:取消 - >取消和(空单元格)

所以,我需要分配第一个单词(在第一列中),然后是下一个字符。

我该怎么做?

这是我的相关代码,它已包含格式代码。

df2 = pd.DataFrame(datatable,columns = cols)
df2['a'] = df2['FLIGHT'].str[:2]
df2['b'] = df2['FLIGHT'].str[2:].str.zfill(4)
df2["UPLOAD_TIME"] = datetime.now()
mask = np.column_stack([df2[col].astype(str).str.contains(r"Scheduled", na=True) for col in df2])
df3 = df2.loc[~mask.any(axis=1)] 

if os.path.isfile("output.csv"):
    df1 = pd.read_csv("output.csv", sep=";")
    df4 = pd.concat([df1,df3])
    df4.to_csv("output.csv", index=False, sep=";")

else:
    df3.to_csv
    df3.to_csv("output.csv", index=False, sep=";")

这里是excel prt sc来自我的表:

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用str.split - n=1分隔第一个空格,expand=True代表返回DataFrame,可以分配给新列:

df2[['c','d']] = df2['STATUS'].str.split(n=1, expand=True)

样品:

df2 = pd.DataFrame({'STATUS':['Estimated 3:17 PM','Delayed 3:00 PM']})


df2[['c','d']] = df2['STATUS'].str.split(n=1, expand=True)
print (df2)
              STATUS          c        d
0  Estimated 3:17 PM  Estimated  3:17 PM
1    Delayed 3:00 PM    Delayed  3:00 PM

如果输入中没有空格,请在输出中获取None

df2 = pd.DataFrame({'STATUS':['Estimated 3:17 PM','Delayed 3:00 PM', 'Canceled']})


df2[['c','d']] = df2['STATUS'].str.split(n=1, expand=True)
print (df2)
              STATUS          c        d
0  Estimated 3:17 PM  Estimated  3:17 PM
1    Delayed 3:00 PM    Delayed  3:00 PM
2           Canceled   Canceled     None

如果需要将None替换为空字符串,请使用fillna

df2[['c','d']] = df2['STATUS'].str.split(n=1, expand=True)
df2['d'] = df2['d'].fillna('')
print (df2)
              STATUS          c        d
0  Estimated 3:17 PM  Estimated  3:17 PM
1    Delayed 3:00 PM    Delayed  3:00 PM
2           Canceled   Canceled