python - 根据另一列中字符串的结尾,为每种类型的不同结尾设置新列中的值

标签 python pandas

我正在尝试在 Pandas 中创建一个新列,其中包含第一列的某些字符串结尾,但是,通过使用 np.where/df.where 我只能设置两个值,一个如果满足条件,如果没有的话,还有另一个。

我尝试从原始的 df 中过滤不同的 df(基于第一列中的值)并在其中添加新列,然后使用 pd.concat 创建一个新的 df 及其工作。

reference_list = ["AAA", "BBB", "CCC", ...]

df["newcolumn"] = np.where(df["column1"].str.endswith(reference_list), "value", "other")

顺便说一句,如果我确实像上面那样,每次它找到引用列表中的值时,它都会将“值”添加到新列,但我希望该值与其在引用列表中找到的值相同 我想要这样的东西

df["newcolumn"] = np.where(df["column1"].str.endswith(reference_list), reference_list_value, "other")

这是我得到的 df

column1   new_column
AAABBB    value
AAACCC    value
BBBCCC    value
BBBAAA    value

这就是我想要的df

column1   new_column
AAABBB    BBB
AAACCC    CCC
BBBCCC    CCC
BBBAAA    AAA

感谢帮助

最佳答案

您可以使用以下列表理解:

df["newcolumn"] = [s for i in df.column1 for s in reference_list if i.endswith(s)]
<小时/>
print(df)

   column1 newcolumn
0  AAABBB       BBB
1  AAACCC       CCC
2  BBBCCC       CCC
3  BBBAAA       AAA

关于python - 根据另一列中字符串的结尾,为每种类型的不同结尾设置新列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102106/

相关文章:

python - 获取两个字符串之间的字符串

python - 如何在 TensorFlow 中获取输出预测

python - 为什么基于 iLocation 的 bool 索引不起作用?

python - 如何根据列(obj)将pandas中的2行合并为1行

python - 根据列值在数据框中添加空白单元格(excel : insert cell and shift right)

python - numpy.linalg.linalg.LinAlgError : SVD did not converge

python - 参数列表的长度 (3) 和 CL 生成的参数数量 (9) 不一致

python - 加快元组计数

python - 将一系列值随机插入到 pd.dataframe 中

python - 数据透视表来填充 Pandas 中的成对观察