我有一个关系数据库格式的数据集(通过各种 .csv 文件的 ID 链接)。
我知道每个数据框仅包含一个 ID 值,我想知道从该行提取值的最简单方法。
我现在在做什么:
# the group has only one element
purchase_group = purchase_groups.get_group(user_id)
price = list(purchase_group['Column_name'])[0]
第三行让我很困扰,因为它看起来很难看,但我不确定解决方法是什么。分组(我猜)假设可能有多个值并返回一个
<class 'pandas.core.frame.DataFrame'>
对象,而我只想返回一行。
这里的聚会迟到了,但是
purchase_group['Column Name'].item()
现在可用,并且比其他一些解决方案更干净
如果
purchase_group
有单行,那么执行 purchase_group = purchase_group.squeeze()
会将其变成一系列,因此您可以简单地调用 purchase_group['Column_name']
来获取您的值
这个方法直观;例如,从数据框中获取第一行值(列表列表中的列表):
np.array(df)[0]
随着时间的推移,我已经多次阅读这篇文章。这是我以不一致的方式在不同存储库中编写的典型内容。所以我做了一些基准测试来确定哪种方法更快。
对于测试,我使用了一个数据框,其中有单列和单行。
df['_col0'].values[0] -> 3.34 µs ± 4.65 ns
df['_col0'].item() -> 4.7 µs ± 10.6 ns
df.values[0][0] -> 6.36 µs ± 611 ns
np.array(df)[0][0] -> 10.4 µs ± 1.19 µs
np.array(df['_col0'])[0] -> 11.2 µs ± 162 ns
df.squeeze() -> 18.3 µs ± 177 ns
df.iloc[0, 0] -> 18.8 µs ± 5.66 µs