python - 根据两列的值选择 Pandas 数据框行

标签 python arrays numpy pandas dataframe

我希望根据两个列值选择一些特定的行。例如:

d = {'user' : [1., 2., 3., 4] ,'item' : [5., 6., 7., 8.],'f1' : [9., 16., 17., 18.], 'f2':[4,5,6,5], 'f3':[4,5,5,8]}
df = pd.DataFrame(d)
print df

Out:
   f1  f2  f3  item  user
0   9   4   4     5     1
1  16   5   5     6     2
2  17   6   5     7     3
3  18   5   8     8     4

我想根据“用户”和“项目”的值选择行。给定一个存储 [user, item] 值对的 2d numpy 数组:

samples = np.array([[1,5],[3,7],[3,7],[2,6]]) 
Out: 
array([[1, 5],
       [3, 7],
       [3, 7],
       [2, 6]])

那么预期的输出是:

    Out:
   f1  f2  f3  item  user
0   9   4   4     5     1
2  17   6   5     7     3
2  17   6   5     7     3
1  16   5   5     6     2

然后,我的最终目标是得到一个 2d numpy 数组存储除 item 和 user 之外的所有列值,即:

Out: 
array([[9, 4, 4],
       [17, 6, 5],
       [17, 6, 5],
       [16, 5, 5]])

如我们所见,它是列 f1、f2、f3 的值。

我该怎么做?

最佳答案

如果您将 samples 设为包含列 useritem 的 DataFrame,那么您可以使用 inner join 获得所需的值.默认情况下,pd.merge 合并共享的 samplesdf 的所有列——在这种情况下,这将是 用户项目。因此,

result = pd.merge(samples, df, how='inner')

产量

   user  item  f1  f2  f3
0     1     5   9   4   4
1     3     7  17   6   5
2     3     7  17   6   5
3     2     6  16   5   5

import numpy as np
import pandas as pd

d = {'user' : [1., 2., 3., 4] ,'item' : [5., 6., 7., 8.],'f1' : [9., 16., 17., 18.], 'f2':[4,5,6,5], 'f3':[4,5,5,8]}
df = pd.DataFrame(d)
samples = np.array([[1,5],[3,7],[3,7],[2,6]]) 
samples = pd.DataFrame(samples, columns=['user', 'item'])

result = pd.merge(samples, df, how='inner')
result = result[['f1', 'f2', 'f3']]
result = result.values
print(result)

产量

[[  9.   4.   4.]
 [ 17.   6.   5.]
 [ 17.   6.   5.]
 [ 16.   5.   5.]]

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

相关文章:

python - 为什么我的 SVM 的性能在缩放训练和测试数据后下降?

c# - 这个 ToArray() 实现如何更优化?

python - 声明大小未知的 2D numpy 数组

python - 遍历一维 Numpy 数组进行聚类

python - ValueError: 'conv2d_2/convolution'的负尺寸大小是由2减去3引起的

python - 'pyenchant' 问题,CentOS(和 El Capitan)

python - 使用内联在前端启用 Django 管理功能

javascript - 7 行,包含数组中的值

c - C 中的静态多维数组与指针和地址

python - 如何(简单地)构建一个整数和 float 混合 numpy 数组