我希望根据条件对数据帧列中的行进行切片 - 我知道我可以根据给定条件使用 .loc 将特定值分配给 df 列中的行,但是我需要条件只是为了确定切片量。
例如,如果该行以“A”开头,我想要前 6 个字符 ([:6]),而如果它以“B”开头,我希望它有前 8 个字符 ([:8] ])。
我这样做是为了在使用 pd.merge() 与另一个数据帧执行内部联接之前将数据转换为正确的格式
.loc。我可以使用 df.loc[df['column'][:1] == 'A'],但它没有给我满足条件的行的索引。我能想到的最好的解决方案是创建一个满足条件的所有索引的列表,然后逐一操作每一行。有更好的方法吗?
最佳答案
您可以使用np.select
进行检查
m1 = df.col.str[0] == 'A'
m2 = df.col.str[0] == 'B'
df['NewCol'] = np.select([m1, m2], [df.col.str[:6], df.col.str[:8]], default = df.col)
关于python - Pandas DataFrame 基于条件的切片列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779891/