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

2024-09-27 09:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在使用的数据集目前在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}

我最近才成功地安装了熊猫,但我并没有把它用在什么地方。最终目标是将修改后的数据导出为CSV。如果你有一个更简单的方法,我会很乐意看到它。你知道吗


Tags: 数据对象namea2dfbaseobjectsobject
1条回答
网友
1楼 · 发布于 2024-09-27 09:32:28

感谢@johnchase为这个问题提供了解决方案。你知道吗

正确的方法,如果使用数据帧,将在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

从这里导出作为csv使用熊猫应该是一个相当简单的操作。你知道吗

谢谢

相关问题 更多 >

    热门问题