python dataframe 现需获取df1中的内容,获取的行由df2中的某些行的索引提供, 某些列的内容是具体的列名,比如A,B,C列
时间: 2024-09-19 19:05:00 浏览: 35
在Python的pandas库中,你可以使用`loc`或`iloc`函数结合条件索引来实现这个需求。假设你有两个DataFrame `df1` 和 `df2`,其中 `df2` 的某些行的索引是你想要从 `df1` 中提取数据的关键,而 `df2` 中的特定列(例如 'Index', 'ColumnNames')提供了你需要选取的列名 A、B、C。
首先,确定 `df2` 中用于定位 `df1` 行的列名,这里我们假设是 `'Index'` 列:
```python
index_column = df2['Index']
column_names = ['A', 'B', 'C'] # 或者直接使用 df2['ColumnNames'].tolist() 如果 'ColumnNames' 是列名
```
然后你可以通过 `df1.loc` 函数根据 `df2` 的索引和列名选择对应的值:
```python
result_df = df1.loc[df2.index, column_names]
```
这里,`df1.loc[df2.index]` 获取 `df2` 中所有索引对应 `df1` 的行,`df1.loc[df2.index, column_names]` 再进一步筛选出指定的列 (`column_names`)。
如果你需要使用整数位置的索引,可以使用 `iloc` 替换 `loc`:
```python
result_df = df1.iloc[df2['Index'].tolist(), [df1.columns.get_loc(name) for name in column_names]]
```
在这个例子中,`df1.iloc[df2['Index'].tolist()]` 使用列表推导式得到 `df2` 索引对应的位置,`[df1.columns.get_loc(name) for name in column_names]` 获取指定列的整数位置。
阅读全文