我遇到过这样的场景,在一列中我可能有 0,2,4 或 6 个字符串,我需要将其扩展为 1,2 或 3 行,如下所示:
当前
员工 | 支付等级 |
---|---|
约翰 | 7A5B |
凯西 | |
汤姆 | 9A9B4C |
想要的
员工 | 支付等级 |
---|---|
约翰 | 7A |
约翰 | 5B |
凯西 | |
汤姆 | 9A |
汤姆 | 9B |
汤姆 | 4C |
我尝试过 .split() 和 .explode() 但在将每个字符串分成 2 个字符的组时遇到一些问题
您应该尝试 pandas.Series.str.slice
而不是拆分您可以使用 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)