2024-10-01 09:16:11 发布
网友
我有一个MultindexDataFrame,其结构如下:
DataFrame
0 1 2 ref A B 21 45 0.01 0.56 0.23 0.02 22 45 0.30 0.88 0.53 0.87 23 46 0.45 0.23 0.90 0.23
我想做的是: 从列[0:2]中选择最接近列“ref”的值,因此预期结果将是:
重建您的DataFrame:
In [1]: index = MultiIndex.from_tuples(zip([21,22,23],[45,45,46]), names=['A', 'B']) In [2]: df = DataFrame({0:[0.01, 0.30, 0.45], 1:[0.56, 0.88, 0.23], 2:[0.23, 0.53, 0.90], 'ref': [0.02, 0.87, 0.23]}, index=index) In [3]: df Out[3]: 0 1 2 ref A B 21 45 0.01 0.56 0.23 0.02 22 45 0.30 0.88 0.53 0.87 23 46 0.45 0.23 0.90 0.23
我首先从ref得到0、1和{}列的绝对距离:
ref
0
1
现在,dist您可以使用DataFrame.idxmin按行确定具有最小值的列:
dist
DataFrame.idxmin
In [5]: idx = dist.idxmin(axis=1) In [5]: idx Out[5]: A B 21 45 0 22 45 1 23 46 1
现在要生成新的closest,那么只需使用idx来索引df:
closest
idx
df
In [6]: df['closest'] = idx.index.map(lambda x: df.ix[x][idx.ix[x]]) In [7]: df Out[7]: 0 1 2 ref closest A B 21 45 0.01 0.56 0.23 0.02 0.01 22 45 0.30 0.88 0.53 0.87 0.88 23 46 0.45 0.23 0.90 0.23 0.23
最后一步,可能会有一个更优雅的方法来做,但我对熊猫比较陌生,这是我现在能想到的最好的方法。在
重建您的
DataFrame
:我首先从}列的绝对距离:
^{pr2}$ref
得到0
、1
和{现在,
dist
您可以使用DataFrame.idxmin
按行确定具有最小值的列:现在要生成新的
closest
,那么只需使用idx
来索引df
:最后一步,可能会有一个更优雅的方法来做,但我对熊猫比较陌生,这是我现在能想到的最好的方法。在
相关问题 更多 >
编程相关推荐