要使用另一个数据框架的索引来选择一个数据框架的行,可以使用isin()
方法和布尔索引。具体步骤如下:
- 准备两个数据框架。在本例中,我们将使用以下两个数据框架:
import pandas as pd
df1 = pd.DataFrame({'A': ['foo', 'bar', 'baz', 'qux'],
'B': [1, 2, 3, 4],
'C': [10, 20, 30, 40]})
df2 = pd.DataFrame({'A': ['bar', 'qux'],
'B': [2, 4],
'C': [20, 40]})
其中df1
包含四个行和三个列,而df2
包含两个行和三个列。这里我们要从df1
中选择与df2
中的索引匹配的行。
- 使用
isin()
方法检查匹配的索引。在本例中,我们将检查df1['A']
中每个元素是否在df2['A']
中。如果某个元素在df2['A']
中,则返回True
,否则返回False
:
match_index = df1['A'].isin(df2['A'])
这将生成一个布尔索引数组,其中每个元素对应于df1
的每个行,如果该行的'A'
列的值在df2
的'A'
列中出现,则该元素为True
,否则为False
。
- 使用布尔索引选择
df1
的匹配行。可以用布尔索引选择只包含匹配索引的行:
match_rows = df1[match_index]
- 查看结果。最后,我们可以查看结果数据框架
match_rows
,以确保它仅包含df1
中的匹配行:
print(match_rows)
完整代码如下:
import pandas as pd
df1 = pd.DataFrame({'A': ['foo', 'bar', 'baz', 'qux'],
'B': [1, 2, 3, 4],
'C': [10, 20, 30, 40]})
df2 = pd.DataFrame({'A': ['bar', 'qux'],
'B': [2, 4],
'C': [20, 40]})
match_index = df1['A'].isin(df2['A'])
match_rows = df1[match_index]
print(match_rows)
输出结果为:
A B C
1 bar 2 20
3 qux 4 40
这样就选择出了df1
中与df2
中匹配索引的行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用另一个数据框架的索引来选择一个数据框架的行 - Python技术站