【问题标题】:How can I split a column into 2 in the correct way?如何以正确的方式将一列拆分为 2?
【发布时间】:2018-03-13 07:59:40
【问题描述】:

我正在从网站上抓取表格,并将其放入 Excel 文件。 我的目标是以正确的方式将一列分成两列。

我要拆分的列:“FLIGHT”

我想要这个表格:

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

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

所以,我需要分隔第 2 个字符(在第一列),然后是 1-2-3-4 个字符的下一个字符。如果 4 没问题,我保留它,如果 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:

【问题讨论】:

    标签: python pandas dataframe split debian


    【解决方案1】:

    您可以将indexing with strzfill 一起使用:

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

    【讨论】:

    • '([A-Z]+)(\d+)' ?有时我的第一个字符以 0(零)开头
    • 我可以写什么来代替这个:"'KL744','BE1013'" 来拆分此列中的所有数据?
    • @Harley 您不需要使用第一行答案。这是因为你没有给我们文本数据。只需使用第二行和第三行即可完成工作。
    • 或者您有多个包含此数据的列?
    • 你跑偏了。操作系统无所谓。重要的是您使用的 pandas 版本。
    猜你喜欢
    • 2018-03-13
    • 2019-11-24
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多