python - 根据另一个数据框中的列名选择数据框中的行

标签 python pandas dataframe lookup

假设我有两个 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。有没有一种自然的方法可以做到这一点 Pandas ?

最佳答案

使用lookup索引在两个df中必须相同:

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

关于python - 根据另一个数据框中的列名选择数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45977523/

相关文章:

python - 如何从游戏循环之外为 Pong 游戏提供指示?

python - 'DataFrame' 对象没有属性 'sort'

python - 汇总 DataFrame 中的非唯一行

python - 在Python中创建(空格分隔的)文本文件的列(或行)数组

python - 如何在 x 分钟后暂停该线程

python - 从python中的单元格获取数字

python - 将自定义函数应用于 pandas 数据框中的每个列组合

python - 从Pandas DataFrame中获取最大值的行索引和列索引

Python/Numpy 查找长度变量跨度

python - 从行中删除任何 0 值,按行降序排列值,对于行中的每个非 0 值,将索引、列名和分数返回到新的 df