簡體   English   中英

根據其他數據框替換熊貓數據框中的值

[英]Replace values in pandas dataframe based on other dataframe

我有兩個數據框,其中一個的形式為:

#   X   Y   
1   2   0.0 
2   5   0.0 
3   10  0.0 
4   15  0.0 
5   17  0.0 
6   21  0.0 

一種形式為:

A   B   C   
1   4   2   
2   5   3   
3   6   4   

我想用X值替換第二個數據幀中的所有ABC值; 所以我想遍歷ABC df,如果該數字與df1的#匹配,則將其替換為X值

茶幾應該看起來像:

A   B   C   
2   15  5   
5   17  10  
10  21  15   

有辦法嗎?

IIUC replace

df1.replace(df.set_index('#').X)
Out[382]: 
    A   B   C
0   2  15   5
1   5  17  10
2  10  21  15

假設您的第一個DataFrame是a ,第二個是b ,您可以將b列映射到ax值,如下所示:

b.apply(lambda y: a.x[(y -1).tolist()].values)

結果是:

    A   B   C
0   2  15   5
1   5  17  10
2  10  21  15

只有您應該使用:

df1.set_index('#',inplace = True)
df=df.apply(lambda x: x.replace(df1.loc[x,'X']))

例:

import pandas as pd
import numpy as np
df1=pd.DataFrame()
df1['#']=[1,2,3,4,5,6]
df1['X']=[2,5,10,15,17,21]
df1['Y']=[0,0,0,0,0,0]
df=pd.DataFrame()
df['A']=[1,2,3]
df['B']=[4,5,6]
df['C']=[2,3,4]
df1.set_index('#',inplace = True)
df=df.apply(lambda x: x.replace(df1.loc[x,'X']))
print(df)

輸出:

    A   B   C
0   2  15   5
1   5  17  10
2  10  21  15

注意 df1.set_index('#',inplace = True)'#'列設置為index。 如果此列已經是索引,則無需執行它

暫無
暫無

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

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