簡體   English   中英

根據另一個的列名選擇數據框中的行

[英]Selecting rows in a dataframe based on the column names of another

說我有兩個dfs

df = pd.DataFrame({'A': [1, 2, 3,4,5],
                'B': [2, 4,2,4,5], 'C': [1, -1, 3,5,10],'D': [3, -4,3,7,-3]}, columns=['A', 'B', 'C', 'D'])
df = df.set_index(['A'])

df2 = pd.DataFrame({'A': [1, 2, 3,4,5],
                    'J': ['B', 'B','C','D','C']}, columns=['A', 'J'])
df2 = df2.set_index(['A'])

我想使用df2逐行選擇df的列,以獲得以下數據幀

   sel
1    2      
2    4
3    3
4    7
5   10

其中前兩個值來自df B列,第三個來自col C,第四個來自col D,最后一個來自col C.在熊貓中有自然的方法嗎?

使用lookupdf indexes必須相同:

print (df.lookup(df2.index, df2['J']))
[ 2  4  3  7 10]

df = pd.DataFrame({'sel':df.lookup(df2.index, df2['J'])}, index=df.index)
print (df)
   sel
A     
1    2
2    4
3    3
4    7
5   10

你也可以使用np.diag

x, y= df2.reset_index().values.T
df= pd.DataFrame(np.diag(df.loc[x, y].values), columns=['sel'])
print(df)
   sel
0    2
1    4
2    3
3    7
4   10

暫無
暫無

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

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