小能豆

我怎样才能以正确的方式将一列分成两列?

py

我正在从网站上抓取表格,并将其放入 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=";")

阅读 30

收藏
2024-12-06

共1个答案

小能豆

你可以通过以下步骤拆分“FLIGHT”列,并根据你的需求调整格式:

  1. 提取前两个字符(航空公司代码)。
  2. 提取航班号,并根据其长度添加前导零,使其总长度为 4 个字符。

下面是你可以用来实现该功能的代码:

import pandas as pd
import numpy as np

# 示例数据
data = {'FLIGHT': ['KL744', 'BE1013', 'LH123', 'AF56']}
df2 = pd.DataFrame(data)

# 拆分FLIGHT列
df2['AIRLINE'] = df2['FLIGHT'].str[:2]  # 提取前两个字符 (航空公司代码)
df2['FLIGHT_NUMBER'] = df2['FLIGHT'].str[2:].str.zfill(4)  # 提取剩下的字符并补充前导零

# 显示结果
print(df2)

代码解释:

  1. df2['AIRLINE'] = df2['FLIGHT'].str[:2]: 取出“FLIGHT”列的前两个字符,作为航空公司代码。
  2. df2['FLIGHT_NUMBER'] = df2['FLIGHT'].str[2:].str.zfill(4): 提取航班号部分,并使用 zfill(4) 填充前导零,确保每个航班号的长度为 4。

输出结果:

   FLIGHT AIRLINE FLIGHT_NUMBER
0    KL744       KL           0744
1   BE1013       BE           1013
2    LH123       LH           0123
3    AF56        AF           0056

将其与现有的代码集成:

假设你已经有 df2 作为你的 DataFrame,你可以将上述拆分步骤放在代码中,确保数据按要求进行格式化:

# 假设 df2 已经存在并包含 'FLIGHT' 列
df2['AIRLINE'] = df2['FLIGHT'].str[:2]
df2['FLIGHT_NUMBER'] = df2['FLIGHT'].str[2:].str.zfill(4)

# 如果你要将其保存到 output.csv 文件中
if os.path.isfile("output.csv"):
    df1 = pd.read_csv("output.csv", sep=";")
    df4 = pd.concat([df1, df2])  # 合并数据
    df4.to_csv("output.csv", index=False, sep=";")
else:
    df2.to_csv("output.csv", index=False, sep=";")

这样,你就可以按照要求拆分“FLIGHT”列并将其保存为新的 CSV 文件。如果有任何其他问题,随时告诉我!

2024-12-06