你这个是下标index,我说的是df.index属性
时间: 2024-03-14 10:47:31 浏览: 41
非常抱歉,我理解有误。如果你想根据 `df.index` 属性的值来取值,可以使用 `.loc` 方法。例如:
```python
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df.set_index('B', inplace=True) # 设置 B 列为索引列
print(df.loc['a']) # 输出索引为 'a' 的行
```
输出结果为:
```
A 1
Name: a, dtype: int64
```
在这个例子中,我们将 B 列设置为索引列,然后使用 `.loc` 方法获取索引为 'a' 的行数据。`.loc` 方法的参数是行索引,如果你想获取某些列的数据,可以在列索引的部分使用 `:` 来选择所有的列。例如:
```python
print(df.loc['a', :]) # 输出索引为 'a' 的所有列的数据
```
输出结果为:
```
A 1
Name: a, dtype: int64
```
相关问题
for i, col in enumerate(columns): line, = ax.plot(df[col], color=random.choice(['r', 'g', 'b', 'y', 'm', 'c'])) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') offset = (i % 5) * 10 # 根据下标计算位置偏移量 ax.annotate(col, xy=(df.index[-1], df[col].iloc[-1]), xytext=(10 + offset, 10 + offset), textcoords='offset points', color=line.get_color(), fontsize=12, ha='left', va='bottom')增加小的图例
要增加小的图例,可以在循环中添加以下代码:
```
handles, labels = [], []
for col in columns:
line, = ax.plot(df[col], color=random.choice(['r', 'g', 'b', 'y', 'm', 'c']))
handles.append(line)
labels.append(col)
offset = (labels.index(col) % 5) * 10 # 根据下标计算位置偏移量
ax.annotate(col, xy=(df.index[-1], df[col].iloc[-1]), xytext=(10 + offset, 10 + offset), textcoords='offset points', color=line.get_color(), fontsize=12, ha='left', va='bottom')
ax.legend(handles, labels, loc='upper left', bbox_to_anchor=(0, 1))
```
这里使用了 `ax.legend()` 函数来添加图例。`handles` 和 `labels` 分别存储了每条线的对象和标签,然后将它们传递给 `ax.legend()` 函数即可。`loc` 参数设置图例的位置,`bbox_to_anchor` 参数设置图例的偏移量,这里设为左上角对齐。
解释一下f=open('./smility.csv','w') wr=csv.writer(f) df = pd.read_csv('./std_ligand.csv') std_smiles=df['SMILES'].tolist() df1 = pd.read_csv('./gencnn.csv') gen_smiles=df1['SMILES'].tolist() std_mols=[Chem.MolFromSmiles(s) for s in std_smiles] gen_mols=[Chem.MolFromSmiles(s) for s in gen_smiles] score_max=[] index_list=[] count=0 for gen_mol in gen_mols: score_list=[] for mol in std_mols: gen_fp=Chem.RDKFingerprint(gen_mol) fp=Chem.RDKFingerprint(mol) score=DataStructs.FingerprintSimilarity(gen_fp,fp) score_list.append(score) max1= max(score_list) index = score_list.index(max(score_list)) count+=1 score_max.append(max1) score_max.append(index)####与哪个相似性最大下标 print(index) ##下面是将结果存入csv,共两列 def list_of_groups(init_list, children_list_len): list_of_groups = zip(*(iter(init_list),) *children_list_len) end_list = [list(i) for i in list_of_groups] count = len(init_list) % children_list_len end_list.append(init_list[-count:]) if count !=0 else end_list return end_list code_list = list_of_groups(score_max,2) print(code_list) for i in range(count): # print('\t',code_list[i]) # print(code_list[i]) x=code_list[i] print(x) wr.writerows([x]) f.close()
这段代码的主要功能是比较两个SMILES字符串列表中分子的相似性,并将结果存储在一个CSV文件中。
首先,通过读取两个CSV文件,分别获取标准分子和待比较分子的SMILES字符串列表。然后,将SMILES字符串转换为RDKit Mol对象,用于计算分子指纹和相似性分数。
接下来,对于每个待比较分子,计算其与标准分子列表中每个分子的相似性分数,并记录最大分数和对应标准分子的下标。这些结果存储在score_max列表中。
然后,将结果按照每个分子与最相似标准分子的分数和下标组合成一个二元组,存储在code_list列表中。最后,将这些二元组写入CSV文件中。
需要注意的是,代码中使用了list_of_groups函数将score_max列表按照每两个元素一组进行划分,这是因为score_max列表中每个分子有一个最大相似性分数和对应标准分子的下标,需要将它们组合成一个二元组。
阅读全文