似乎我的问题和其他几个类似,但我找不到一个适合我确切的问题,所以道歉,如果我没有遇到这个特定的答案,如果它已经存在.This个问题有点类似,但我不想分配一个列表作为新的列值,我想分配相应列表的名称作为列值.

例如,使用如下数据框:

d = {'name': ['Tom', 'Patrick', 'Lamar'], 'rating': [100, 97, 95]}
df = pd.DataFrame(data=d)
print(df)

以及如下列表的集合:

tier1 = ['Tom', 'Patrick']
tier2 = ['Lamar']

如何有效地创建一个新的"层"列,如以下所示:

d = {'name': ['Tom', 'Patrick', 'Lamar'], 'rating': [100, 97, 95], 'tier': [1, 1, 2]}
df = pd.DataFrame(data=d)
print(df)

我的实际数据库有300行,我有11层列表.我最初将此作为一个循环问题来处理,但不确定如何通过判断'name'列,找到它所在的层列表,然后将层分配给新列,来循环使用pd.iterrows()的rabrame的行.我见过类似的问题,人们使用字典而不是列表,所以我把我的层次列表转换成一个字典,如下所示:

tier_dict = {
    1: tier1,
    2: tier2
}
print(tier_dict)

但我意识到,大多数示例都使用了COLUMN变量来匹配DICT中的键,然后将该值赋给该列,但在我的示例中,我想将该键赋值为新的列值,这就是我当前所在的位置谢谢你的帮助!

推荐答案

import pandas as pd
d = {'name': ['Tom', 'Patrick', 'Lamar'], 'rating': [100, 97, 95]}
df = pd.DataFrame(data=d)

tier1 = ['Tom', 'Patrick']
tier2 = ['Lamar']

在下一部分中,创建字典映射来判断名称—层的关系.

tier_dict = {tier: idx + 1 for idx, tier_list in enumerate([tier1, tier2]) for tier in tier_list}

最后一部分使用映射创建新列

df['tier'] = df['name'].map(tier_dict)

print(df)

输出应该是这样的.

      name  rating  tier
0      Tom     100     1
1  Patrick      97     1
2    Lamar      95     2

Python相关问答推荐

如何计算两极打印机中 * 所有列 * 的出现次数?

为什么tkinter框架没有被隐藏?

在Pandas DataFrame操作中用链接替换'方法的更有效方法

Pandas - groupby字符串字段并按时间范围 Select

如何在Raspberry Pi上检测USB并使用Python访问它?

为什么抓取的HTML与浏览器判断的元素不同?

为一个组的每个子组绘制,

如何在Python中找到线性依赖mod 2

从嵌套的yaml创建一个嵌套字符串,后面跟着点

通过ManyToMany字段与Through在Django Admin中过滤

判断solve_ivp中的事件

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

将一个双框爆炸到另一个双框的范围内

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

数据框,如果值在范围内,则获取范围和

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

与同步和异步客户端兼容的Python函数

查找数据帧的给定列中是否存在特定值

我可以同时更改多个图像吗?

IpyWidget Select 框未打开