在sam中获取csv文件中的值

2024-05-20 18:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,给定一个csv文件作为使用pandas和python的数据帧,我希望尽可能高效地获得与另一个值在同一行中的值。在

为了澄清这一点,我将用以下csv为例:

STAID   SOUID   DATE      TX     Q_TX
162     100522  19010101 -31     0
162     100522  19010102 -13     0
162     100522  19010103 -5      0
162     100522  19010104 -10     0
162     100522  19010105 -18     0

假设我实现了下面的代码

^{pr2}$

Max_val现在将得到-5的值。问题是我现在想知道'DATE'中的值,它将与max_val在同一行中,或者换句话说:“DATE”列中的值与找到的值共享相同的索引。我的目标值显然是19010104。只有熊猫才能做到这一点,最有效的方法是什么??在

更新:对min_val有点小改动,它显然应该是max_val而不是min_val


Tags: 文件csv数据代码pandasdatevalmin
2条回答

我们可以使用idxmax

df.DATE[df.TX.idxmax()]
Out[346]: 19010103

为了提高速度

^{pr2}$

使用loc是“标准”,应该具有很高的可读性。但是使用idxmax和{}是你最快的答案(见温的回答,我是从哪里得到这个想法的)。您可能需要用真实的数据进行测试,以确保这一小部分数据不会带来危险。见^{}

Fast label-based scalar accessor Similarly to loc, at provides label based scalar lookups. You can also set using these indexers.

我的测试最快的答案是:

min_val = data.TX.idxmax() #with min_val's index already set
%%timeit
data.at[min_val,'DATE']
# 100000 loops, best of 3: 6.73 µs per loop

在jupyter上使用%%timeit可以看到时间:

^{pr2}$

相关问题 更多 >