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