怎么用pandas提取一个表格多个分子的指纹并存储
时间: 2023-04-02 16:02:38 浏览: 77
您可以使用RDKit库中的Morgan指纹来提取表格中多个分子的指纹。首先,您需要将表格中的分子转换为RDKit分子对象,然后使用Morgan指纹函数生成指纹。最后,您可以将指纹存储为CSV文件或其他格式。以下是一个示例代码:
```python
import pandas as pd
from rdkit import Chem
from rdkit.Chem import AllChem
# 读取表格
df = pd.read_csv('molecules.csv')
# 将SMILES字符串转换为RDKit分子对象
mols = [Chem.MolFromSmiles(smiles) for smiles in df['SMILES']]
# 生成Morgan指纹
fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=1024) for mol in mols]
# 将指纹存储为CSV文件
fp_df = pd.DataFrame(fps)
fp_df.to_csv('fingerprints.csv', index=False)
```
这将提取表格中所有分子的Morgan指纹,并将其存储为名为“fingerprints.csv”的CSV文件。
相关问题
pandas 加载一个表格 并进行封装
好的,可以使用 Pandas 库中的 read_csv() 方法来加载一个表格,然后进行封装。例如,假设我们有一个名为 data.csv 的 csv 文件,它包含以下数据:
```
name,age,city
John,25,New York
Emily,30,San Francisco
Tom,35,Los Angeles
```
我们可以使用以下代码加载并封装这个表格:
```python
import pandas as pd
class Table:
def __init__(self, filepath):
self.df = pd.read_csv(filepath)
def get_row(self, index):
return self.df.loc[index]
def get_column(self, col_name):
return self.df[col_name]
def get_cell(self, row_index, col_name):
return self.df.loc[row_index, col_name]
```
这个 Table 类中,我们在初始化时使用 read_csv() 方法加载表格,并将其存储在一个 DataFrame 对象中。然后,我们实现了三个方法来获取一行、一列或一个单元格的数据。例如,我们可以使用以下代码来使用这个 Table 类:
```python
table = Table('data.csv')
print(table.get_row(1)) # 获取第二行数据
print(table.get_column('age')) # 获取 age 列数据
print(table.get_cell(0, 'city')) # 获取第一行 city 列数据
```
输出结果如下:
```
name Emily
age 30
city San Francisco
Name: 1, dtype: object
0 25
1 30
2 35
Name: age, dtype: int64
New York
```
Python pandas实现多个表生成一个表格代码
可以使用 pandas 库中的 merge() 或者 join() 方法将多个表格合并成一个表格。
以 merge() 方法为例,假设有两个表格 A 和 B,它们都有一个共同的列名为 key。可以使用下面的代码将这两个表格合并成一个新的表格 C:
```python
import pandas as pd
# 创建表格 A
A = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
# 创建表格 B
B = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
# 合并表格 A 和 B
C = pd.merge(A, B, on='key')
print(C)
```
输出结果:
```
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
3 K3 A3 B3 C3 D3
```
其中 merge() 方法的参数 on 指定需要合并的列名。如果要合并的列名不同,可以使用 left_on 和 right_on 分别指定左表格和右表格的列名。
类似的,使用 join() 方法也可以实现多个表格合并成一个表格。不同之处在于 join() 方法是按照索引(行标签)进行合并的。具体使用方法可参考 pandas 官方文档。