尝试根据列是否包含某个字符串来重新编码列

时间:2018-05-04 16:20:24

标签: python string python-3.x pandas dataframe

我正在尝试推广群组,我在数据框中有一列字符串标题。我想根据它们是否包含字符串来拆分它们。有许多组,但它们都包含字符串"Alpha" "Beta""Gamma"。我想用这些标题重新编写一个新列。下面的函数似乎没有按照我的预期方式工作,我不确定正则表达式或np.where方法是否会更好。非常感谢任何帮助。

def recode_func(n):
    for i in n:
        if "Alpha" in i:
            i == "Alpha"
        elif "Beta" in i:
            i== "Beta"
        elif "Gamma" in i:
            i == "Gamma"
        else:
            continue

1 个答案:

答案 0 :(得分:1)

一种方法是迭代列表并使用pd.Series.str.contains

for item in ['Alpha', 'Beta', 'Gamma']:
    df.loc[df['col'].str.contains(item, regex=False), 'col'] = item

如上所述,regex=False应该可以提高效果。

这比按行迭代数据帧更有效。