我需要将包含字符串的列分成两列在这里我可以这样做
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]))
)