我正在尝试在 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/