【发布时间】:2021-10-23 11:03:52
【问题描述】:
我有一本字典:
dict = {"name1":["name1_a, "name1_b"], "name2":["name2_a", "name2_b", "name2_c"]
然后我读入一个 .csv 文件作为具有以下结构的数据框:
df = pd.read_csv('file.csv')
| Name | Value |
|---|---|
| "name1" | 10 |
| "name1_b" | 30 |
| "name2_c" | 30 |
我需要一个函数来遍历数据框和字典,以某种方式在数据框中搜索字典列表中的每个名称(“name1_a”、“name1_b”等)。一旦找到匹配项,比如“name1_b”,它应该将相应的值 (30) 添加到数据框中的“name1”。如果数据框中不存在名称(如示例中的“name2”),则应创建一个新行并分配与“name2_a”+“name2_b”等之和对应的值。
所以结果数据框应该是这样的(“name_1b”的值被添加到“name1”的值中,“name2”被创建并分配了“name2_c”的值):
| Name | Value |
|---|---|
| "name1" | 40 |
| "name1_b" | 30 |
| "name2_c" | 30 |
| "name2" | 30 |
感谢您的帮助!
【问题讨论】:
-
你能把这个写成一个工作例子吗……至少是字典和数据框的初始化。我们应该能够复制/粘贴来解决问题。
-
名字是唯一的吗?例如,“name1”会在“名称”列中出现多次吗?
-
是的,名称在数据框中是唯一的
-
数据框中没有“name2_a”,所以我无法分配与“name2_a”+“name2_b”之和对应的值。考虑到
dict中的 name:list_of_names 对,您似乎想将 list_of_names 的值添加到 name,不存在的名称默认为 0。 -
是的@tdelaney我认为你的解释是正确的,因为只有“name2_c”在数据框中,函数必须为“name”创建一个新行并为其分配“name2_c”的值
标签: python pandas dataframe loops dictionary