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

时间:2017-10-02 08:47:48

标签: python pandas dataframe split debian

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

我要拆分的列:“FLIGHT”

我想要这个表格:

第一个例子:KL744 - > KL和0744

第二个例子:BE1013 - > BE和1013

所以,我需要分配FIRST 2字符(在第一列中),然后是1-2-3-4字符的下一个字符。如果4是oke,我保留它,如果是3,我想在它之前放一个0,如果是2:我想在它之前放置00(所以我的目标是在第二列中得到4个字符/数字。)

我该怎么做?

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

df2 = pd.DataFrame(datatable,columns = cols)
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 :(得分:2)

您可以indexing with str使用zfill

df = pd.DataFrame({'FLIGHT':['KL744','BE1013']})


df['a'] = df['FLIGHT'].str[:2]
df['b'] = df['FLIGHT'].str[2:].str.zfill(4)
print (df)
   FLIGHT   a     b
0   KL744  KL  0744
1  BE1013  BE  1013

我相信你的代码需要:

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()
...
...