Pandas:如何从给定(行,列)对列表的 DataFrame 中检索值?
Pandas: how to retrieve values from a DataFrame given a list of (row, column) pairs?
tldr; 我想在 DataFrame 上传递一系列位置并接收一系列值,如果可能的话使用 DataFrame 方法。
我有一个包含一些列和一个索引的 Dataframe
import pandas as pd
df_a = pd.DataFrame(
{'A':[0,1,3,7],
'B':[2,3,4,5]}, index=[0,1,2,3])
我想检索 DataFrame 上特定(行、列)位置的值
rows = [0, 2, 3]
cols = ['A','B','A']
df_a.loc[行,列] returns 一个 3x3 数据帧
|A |B |A
0 0 2 0
2 3 4 3
3 7 5 7
我要的是(row,col)值对应的一系列值,一系列长度为3
[0, 4, 7]
在 pandas 中执行此操作的最佳方法是什么?
Pandas不支持那种索引,只支持numpy
>>> df.to_numpy()[rows, df.columns.get_indexer(cols)]
array([0, 4, 7])
当然可以!您可以使用 DataFrame.lookup
来实现您想要的:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.lookup.html
import pandas as pd
df_a = pd.DataFrame({'A':[0,1,3,7], 'B':[2,3,4,5]}, index=[0,1,2,3])
rows = [0, 2, 3]
cols = ['A','B','A']
values = df_a.lookup(rows, cols)
print(values)
array([0, 4, 7], dtype=int64)
tldr; 我想在 DataFrame 上传递一系列位置并接收一系列值,如果可能的话使用 DataFrame 方法。
我有一个包含一些列和一个索引的 Dataframe
import pandas as pd
df_a = pd.DataFrame(
{'A':[0,1,3,7],
'B':[2,3,4,5]}, index=[0,1,2,3])
我想检索 DataFrame 上特定(行、列)位置的值
rows = [0, 2, 3]
cols = ['A','B','A']
df_a.loc[行,列] returns 一个 3x3 数据帧
|A |B |A
0 0 2 0
2 3 4 3
3 7 5 7
我要的是(row,col)值对应的一系列值,一系列长度为3
[0, 4, 7]
在 pandas 中执行此操作的最佳方法是什么?
Pandas不支持那种索引,只支持numpy
>>> df.to_numpy()[rows, df.columns.get_indexer(cols)]
array([0, 4, 7])
当然可以!您可以使用 DataFrame.lookup
来实现您想要的:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.lookup.html
import pandas as pd
df_a = pd.DataFrame({'A':[0,1,3,7], 'B':[2,3,4,5]}, index=[0,1,2,3])
rows = [0, 2, 3]
cols = ['A','B','A']
values = df_a.lookup(rows, cols)
print(values)
array([0, 4, 7], dtype=int64)