python - Pandas DataFrame 基于条件的切片列

标签 python pandas dataframe

我希望根据条件对数据帧列中的行进行切片 - 我知道我可以根据给定条件使用 .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/

相关文章:

python - 用python合并iqy文件

python - 如何删除字典中的键值?

python - Flask 网站 -- 500 内部服务器错误

python - 比较Python中的浮点值

pandas - 取当前和前一天之间的最小值 -rolling().min()

python - 在 Pandas 中合并索引上的数据帧效率更高

python - 在数据框的列之间创建成对关系

r - r 中的表具有多个子行并写入 pdf

python - PyInstaller 3.2.1 与 Kivy 1.10.0 pyz 语法错误并且不打包

python - 用 python 翻译数据框列