请原谅这个问题的任何天真。在过去的几个月里,我一直在努力形成对编程的基本理解。有很多差距,所以我可能不知道我不知道的是什么。
我正在使用的数据集目前处于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 | base | 99
| a2 | base | 250
| a3 | base | 600
| a4 | base | 87
| a5 | base | 1202
| a6 | base | 58
...
我想为每个对象附加新的值/值名称。
输出应该如下所示(星号表示附加值):
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
从粗略的意义上说,这就是我想要实现的目标:
for each object in objects:
if df_Objects[ObjectName] = df_Object_Base[ObjectName]:
df_Objects = df_Objects + {Value_Name, Value}
我最近才成功安装了pandas,但我没有太多使用它。最终目标是将修改后的数据导出为CSV格式。如果你有一个更简单的方法,我会很乐意看到它。
答案 0 :(得分:0)
感谢@johnchase提供了解决此问题的方法。
如果使用DataFrame,则会使用here概述正确的方法。
我试图在列上加入两个数据帧(例如,从上面的链接开始):
>>> 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
从这里使用pandas导出为csv应该是一个非常简单的操作。
谢谢