【问题标题】:pandas dataframe 2 dim index slice熊猫数据框 2 暗淡索引切片
【发布时间】:2014-04-19 20:48:46
【问题描述】:

我在使用 2 暗索引切片时遇到问题。

我有以下数据框

 df = pd.DataFrame([(11,91),(12,92),(13,93),(14,94),(15,95)],columns =list('AB'))

   A   B
0  11  91
1  12  92
2  13  93
3  14  94
4  15  95

然后我会有一个“索引数组”

df_index = pd.DataFrame([(4,4),(4,0),(0,3),(2,2),(1,1),(1,1),(1,1),(0,4)],columns =list('xy'))
   x  y
0  4  4
1  4  0
2  0  3
3  2  2
4  1  1
5  1  1
6  1  1
7  0  4

我想使用 df 上的 df_index 来返回。您会看到如何在每列的索引上选择值

   A_x  B_y
0  15  95
1  15  91
2  11  94
3  13  93
4  12  92
5  12  92
6  12  92
7  11  95

我可以通过创建一个循环并分别对每一列进行索引来做到这一点

loop 1: 
df['A'][df_indexes['x'].values]

lopp 2:
df['B'][df_indexes['y'].values]

然后将它们重新组合在一起。

如何以一种 numpy 的方式一次性做到这一点?

【问题讨论】:

    标签: numpy pandas slice


    【解决方案1】:

    通常不使用索引数组,例如两列中的 x 暗淡。很奇怪的工作。不过这会非常快。

    In [85]: DataFrame({'A' : df.iloc[df_index['x'].values]['A'].reset_index(drop=True), 
                        'B' : df.iloc[df_index['y'].values]['B'].reset_index(drop=True)})
    Out[85]: 
        A   B
    0  15  95
    1  15  91
    2  11  94
    3  13  93
    4  12  92
    5  12  92
    6  12  92
    7  11  95
    
    [8 rows x 2 columns]
    

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 2018-07-28
      • 1970-01-01
      • 2021-08-07
      • 2021-03-27
      • 1970-01-01
      • 2020-06-19
      • 2018-10-27
      • 2015-08-11
      相关资源
      最近更新 更多