基于条件的Pandas DataFrame切片列

时间:2019-06-26 19:34:28

标签: python pandas dataframe

我希望根据条件对数据帧列中的行进行切片-我了解我可以使用.loc根据给定的条件为df列中的行分配特定的值,但是我需要该条件只是为了确定要切片多少。

例如,如果该行以'A'开头,我希望前6个字符([:6]),而如果它以'B'开头,我希望它具有前8个字符([:8] ])。

我这样做是为了在使用pd.merge()与另一个数据帧执行内部联接之前将数据转换为正确的格式

.loc。我可以使用df.loc [df ['column'] [:1] =='A'],但是它没有给我满足条件的行的索引。我能想到的最好的解决方案是创建一个满足条件的所有索引的列表,然后逐个处理每一行。有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用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)
相关问题