簡體   English   中英

Python將值附加到唯一對象列表

[英]Python append value to list of unique objects

請原諒這個問題。 在過去的幾個月中,我一直在積極嘗試對編程進行基本的了解。 差距很多,所以我可能不知道我不知道的地方。

我正在使用的數據集目前在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。 如果您有一個更簡單的方法,我將很樂意看到它。

感謝@johnchase提供的見解,可以找到此問題的解決方案。

如果使用DataFrame,則此處概述正確的方法。

我試圖在一個列上連接兩個數據幀(來自上面鏈接的示例):

>>> 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應該是一個非常簡單的操作。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM