gpt4 book ai didi

python-3.x - 将多分类列转换为 Pandas 中的两个类别

转载 作者:行者123 更新时间:2023-12-05 08:36:26 25 4
gpt4 key购买 nike

我有一个数据框,如下所示。

df:

ID      tag              
1 pandas
2 numpy
3 matplotlib
4 pandas
5 pandas
6 sns
7 sklearn
8 sklearn
9 pandas
10 pandas

在上面的 df 中,我想添加一个名为 tag_binary 的列。不管它是不是 Pandas ,哪个都会。

预期输出:

ID      tag            tag_binary         
1 pandas pandas
2 numpy non_pandas
3 matplotlib non_pandas
4 pandas pandas
5 pandas pandas
6 sns non_pandas
7 sklearn non_pandas
8 sklearn non_pandas
9 pandas pandas
10 pandas pandas

我使用字典和 map 函数尝试了以下代码。它运作良好。但我想知道在不创建这个完整词典的情况下是否有更简单的方法。

d = {'pandas':'pandas', 'numpy':'non_pandas', 'matplotlib':'non_pandas',
'sns':'non_pandas', 'sklearn':'non_pandas'}
df["tag_binary"] = df['tag'].map(d)

最佳答案

您可以使用 where 进行相等性检查以保留 'pandas' 并用 'non_pandas' 填充其他所有内容。

df['tag_binary'] = df['tag'].where(df['tag'].eq('pandas'), 'non_pandas')

ID tag tag_binary
0 1 pandas pandas
1 2 numpy non_pandas
2 3 matplotlib non_pandas
3 4 pandas pandas
4 5 pandas pandas
5 6 sns non_pandas
6 7 sklearn non_pandas
7 8 sklearn non_pandas
8 9 pandas pandas
9 10 pandas pandas

如果你想要更灵活的东西,那么你也可以将特定值映射到一些标签,那么你可以利用这样一个事实,即对于不在你的 dict 中的键,map 返回 NaN。因此,只指定您关心的映射,然后 fillna 处理所有其他情况。

# Could be more general like {'pandas': 'pandas', 'geopandas': 'pandas'}
d = {'pandas': 'pandas'}
df['pandas_binary'] = df['tag'].map(d).fillna('non_pandas')

关于python-3.x - 将多分类列转换为 Pandas 中的两个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69166951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com