![](/img/trans.png)
[英]How to update a column in pandas DataFrame based on column from another 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.