怎么将数据框中一列设置为索引,另外3列设置为该索引对应的列表,构成一个字典,删去另外三列的索引,不删对应值 ,对应值构成列表
时间: 2024-02-18 09:05:24 浏览: 48
为数据库建立索引
你可以在使用 `set_index` 方法将一列设置为索引后,使用 `to_dict` 方法将其转换为字典。为了不删对应值,你可以在转换为字典后,使用字典推导式将三个列转换为列表,然后再将列表作为字典的值。代码如下:
```python
import pandas as pd
# 假设数据框为 df,将列 A 作为索引,列 B、C、D 分别对应的列表构成字典
result_dict = df.set_index('A')[['B', 'C', 'D']].to_dict('index')
# 将 B、C、D 转换为列表,作为字典的值
result_dict = {k: [v['B'], v['C'], v['D']] for k, v in result_dict.items()}
```
这里使用了和上面一样的方法将列 A 设置为索引,然后使用了 to_dict 方法将数据框转换为字典。to_dict 方法的参数 'index' 表示以索引为键,列名为值构成字典。最后得到的 result_dict 是一个嵌套字典,其中外层字典的键是索引值,值是一个字典,这个字典的键是列名,值是对应的列值。例如,如果数据框中有两个索引值为 'a' 和 'b' 的行,那么 result_dict 可能长这样:
```python
{
'a': {'B': 1, 'C': 2, 'D': 3},
'b': {'B': 4, 'C': 5, 'D': 6}
}
```
接下来,我们使用字典推导式遍历字典中的每个键值对,即每一行数据。对于每一行数据,我们将 B、C、D 三个列转换为列表,并将这个列表作为字典的值,然后将新的键值对添加到新的字典中。这样就得到了一个新的字典,它的键还是索引值,但值只有一列,这一列是列表,列表中的元素分别对应原来的三列。例如,经过转换后,上面的字典可能变成这样:
```python
{
'a': [1, 2, 3],
'b': [4, 5, 6]
}
```
请注意,这里每个值都是一个列表,如果你只想保留其中的某几列,只需要在列表 ['B', 'C', 'D'] 中去掉相应的列名即可。
阅读全文