如何在列中的第 N 个字符处拆分 DataFrame 行?

问题描述 投票:0回答:2

我遇到过这样的场景,在一列中我可能有 0,2,4 或 6 个字符串,我需要将其扩展为 1,2 或 3 行,如下所示:

当前

员工 支付等级
约翰 7A5B
凯西
汤姆 9A9B4C

想要的

员工 支付等级
约翰 7A
约翰 5B
凯西
汤姆 9A
汤姆 9B
汤姆 4C

我尝试过 .split() 和 .explode() 但在将每个字符串分成 2 个字符的组时遇到一些问题

python pandas dataframe split list-comprehension
2个回答
0
投票

您应该尝试 pandas.Series.str.slice

而不是拆分

0
投票

您可以使用 apply 方法分隔字符串并将值拆分为新行:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Employee": ["Jhon", "Kathy", "Tom"],
        "Pay Grade": ["7A5B", np.nan, "9A9B4C"]
    }
)
df["Pay Grade"].fillna("", inplace=True)

df["Pay Grade"] = df["Pay Grade"].apply(
    lambda value: '|'.join([value[i:i+2] for i in range(0, len(value), 2)])
)

df = df.join(
    df.pop("Pay Grade").str.extractall(r"([^|]+)").droplevel(1)[0].rename("Pay Grade")
).reset_index(drop=True)
© www.soinside.com 2019 - 2024. All rights reserved.