根据另一列是否包含每一行名称创建新列

尝试使用 pandas 遍历每一行,评估该行的 B 列值是否包含 A 列中的任何值,然后填充与 A 行中的每个值对应的新列 C、D、E ...。代码下面是我为获得相同结果而必须做的事情,但在这里我需要事先知道 A 行中可能存在哪些值。


d = {'country': ["USA", "China", "Singapore"], 'allies': ["Turkey, UK, France, India", "DPRK, Singapore", "USA, China"]}

df = pd.DataFrame(data=d)


df["USAally"] = df['allies'].map(lambda x: 1 if "USA" in x else 0)

df["Chinaally"] = df['allies'].map(lambda x: 1 if "China" in x else 0)

df["Singaporeally"] = df['allies'].map(lambda x: 1 if "Singapore" in x else 0)


浮云间
浏览 177回答 3
3回答

大话西游666

您可以使用get_dummies此处有效地执行此操作:dummies = (df['allies'].str.get_dummies(sep=', ')                       .reindex(df['country'].unique(), axis=1)                       .add_suffix('_ally'))df.join(dummies)                                                  country                     allies  USA_ally  China_ally  Singapore_ally0        USA  Turkey, UK, France, India         0           0               01      China            DPRK, Singapore         0           0               12  Singapore                 USA, China         1           1               0在哪里,dummies   USA_ally  China_ally  Singapore_ally0         0           0               01         0           0               12         1           1               0

慕姐8265434

让我们试试这个,用它series.unique来识别独特的国家,然后str.contains检查它是否存在。for c in df.country.unique():    df[f'{c}_Aally'] = df.allies.str.contains(c).astype(int)    dfOut[20]:      country                     allies  USA_Aally  China_Aally  Singapore_Aally0        USA  Turkey, UK, France, India         0           0               01      China            DPRK, Singapore         0           0               12  Singapore                 USA, China         1           1               0

慕沐林林

这是您的代码的概括,首先获取列中出现的所有唯一字母letter,然后分别循环遍历它们并基本上对每个字母执行您在上面所做的事情。complete_letter_set = set(''.join(df['letter'])for l in complete_letter_set:    df[f"letter{l}exists"] = df['letter'].map(lambda x: int(l in x))请注意,我已将条件简化1 if A in x else 0为 just int(l in x),因为int(True) == 1无论如何int(False) == 0。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python