簡體   English   中英

根據其他 dataframe 的列更新 pandas dataframe

[英]update pandas dataframe based on column from other dataframe

我有第一個 dataframe dffieldnames 它只有一列 FIELD_NAME

FIELD_NAME
MKEY
reporting_entity
provision_amount
ORIG_country
RCA_check
EWA_check

我有第二個 dataframe dfdata ,其中所有上述行都顯示為具有實際值的列。 所以它看起來像下面。 第一個 dataframe 中的字段名稱可能會或可能不會作為第二個 dataframe 中的列出現。 例如 - EWA 檢查僅存在於第一個 dataframe 中,但不存在於第二個 dataframe 中。

MKEY | reporting_entity |provision_amount | ORIG_country | RCA_check | adj_id
123  |  1234556         | 400.2344        |   NE         |           | ADJ02020
254  |  8484849         |                 |   NE         |  YES      | ADJ84848

我想在 dataframe dffieldname中添加新列(name = VALUE)。 我將使用 adj_id 作為過濾器 -

如果 adj_id='ADJ02020',dataframe dffieldname output 將是 -

FIELD_NAME       |  VALUES
MKEY             |  123
reporting_entity |  1234556         
provision_amount |  400.2344
ORIG_country     |  NE
RCA_check        | 
EWA_check        | 

如果 adj_id = 'ADJ84848',dataframe dffieldname output 將是 -

FIELD_NAME       |  VALUES
MKEY             |  254
reporting_entity |  8484849
provision_amount |  
ORIG_country     |  NE
RCA_check        |  YES
EWA_check        |

您可以使用索引來執行此操作。

FIELD_NAME設為索引。

dffieldnames.set_index('FIELD_NAME', inplace=True)

然后使用該索引將值與從選定的特定行中由squeeze()創建的Series的索引進行匹配:

dffieldnames['VALUE'] = dfdata[dfdata['adj_id']=='ADJ02020'].squeeze()
dffieldnames.fillna('')


                     VALUE
FIELD_NAME                
MKEY                   123
reporting_entity   1234556
provision_amount  400.2344
ORIG_country            NE
RCA_check                 
EWA_check                

如果您不希望 FIELD_NAME 保留為索引,您可以重置索引:

dffieldnames.reset_index()

         FIELD_NAME     VALUE
0              MKEY       123
1  reporting_entity   1234556
2  provision_amount  400.2344
3      ORIG_country        NE
4         RCA_check          
5         EWA_check         

暫無
暫無

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

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