Python将值附加到唯一对象列表中

Python将值附加到唯一对象列表中,python,excel,list,pandas,append,Python,Excel,List,Pandas,Append,请原谅我在这个问题上的幼稚。在过去的几个月里,我一直在积极尝试对编程有一个初步的了解。有很多差距,所以我可能不知道我不知道什么 我正在使用的数据集目前在excel中,因此VBA可能是一个不错的选择,但是我想借此机会使用Python。我会将数据作为CSV导入,然后对其进行操作。这似乎非常适合熊猫数据帧 我有一个对象列表,每个对象都有几个命名值: Object Name | Value Name | Value | |:-----------|------------:|:----

请原谅我在这个问题上的幼稚。在过去的几个月里,我一直在积极尝试对编程有一个初步的了解。有很多差距,所以我可能不知道我不知道什么

我正在使用的数据集目前在excel中,因此VBA可能是一个不错的选择,但是我想借此机会使用Python。我会将数据作为CSV导入,然后对其进行操作。这似乎非常适合熊猫数据帧

我有一个对象列表,每个对象都有几个命名值:

 Object Name | Value Name  | Value        |
|:-----------|------------:|:------------:|
| a1         |        top1 |     20     
| a1         |        top2 |     30
| a1         |        top3 |     65
| a2         |        top1 |     28      
| a2         |        top2 |     32
| a3         |        top1 |     89
| a3         |        top2 |     120
| a3         |        top3 |     160
...
 Object Name | Value Name  | Value        |
|:-----------|------------:|:------------:|
| a1         |        top1 |     20     
| a1         |        top2 |     30
| a1         |        top3 |     65
| a1 *       |        base |     99
| a2         |        top1 |     28      
| a2         |        top2 |     32
| a2 *       |        base |     250
| a3         |        top1 |     89
| a3         |        top2 |     120
| a3         |        top3 |     160
| a3 *       |        base |     600
在一个单独的列表中,每个对象都有一个附加值

 Object Name | Value Name  | Value        |
|:-----------|------------:|:------------:|
| a1         |        base |     99     
| a2         |        base |     250
| a3         |        base |     600
| a4         |        base |     87
| a5         |        base |     1202
| a6         |        base |     58
...
我想为每个对象添加新的值/值名称

输出应如下所示(星号表示附加值):

粗略地说,这就是我想要实现的目标:

for each object in objects:
    if df_Objects[ObjectName] = df_Object_Base[ObjectName]:
        df_Objects = df_Objects + {Value_Name, Value}

我只是最近才成功地安装了熊猫,但我并没有把它发挥多大作用。最终目标是将修改后的数据导出为CSV。如果你有一个更简单的方法,我会非常乐意看到它。

感谢@johnchase提供了解决这个问题的洞察力

如果使用数据帧,则概述了正确的方法

我试图在一列上连接两个数据帧(上面链接中的示例):

-

从这里开始,使用pandas导出为csv应该是一个非常简单的操作


谢谢

听起来好像您正试图基于一列合并两个数据帧,尽管还不完全清楚。如果您要包括一个输出应该是什么样子的示例,它可能会澄清问题。@johncase该问题已被编辑以显示所需的输出
>>> A              >>> B
lkey value         rkey value
0   foo  1         0   foo  5
1   bar  2         1   bar  6
2   baz  3         2   qux  7
3   foo  4         3   bar  8
>>> merge(A, B, left_on='lkey', right_on='rkey', how='outer')
lkey  value_x  rkey  value_y
0  foo   1        foo   5
1  foo   4        foo   5
2  bar   2        bar   6
3  bar   2        bar   8
4  baz   3        NaN   NaN
5  NaN   NaN      qux   7