如何将数据框列分成两列,并在一个表达式中使用Python转换值?



我需要将包含字符串的列分成两列在这里我可以这样做

df[['col1','col2']] = df['col1'].str.split('-', expand=True) .

但是我还需要在将第二个字符串存储在col2之前对其应用转换这个变换依赖于col1中值的某些属性。例如,col2中的字符串如果col1中字符串的长度反转5 .

有可能以某种方式展开上面的表达式吗?

正如@Ynjxsjmh的评论所指出的,您可以使用.assign(),但您需要lambda函数来访问数据框的当前状态(您需要访问两个新列):

df = pd.DataFrame({"Col1": ["123-abc"] * 3 + ["12345-abcde"] * 3})
df[["Col1", "Col2"]] = (
    df["Col1"]
    .str.split("-", expand=True)
    .rename(columns={0: "C1", 1: "C2"})
    .assign(C2=lambda df: df["C2"].where(df["C1"].str.len().ne(5), df["C2"].str[::-1]))
)

最新更新