要在 Linux 系统中运行上述 Python 代码,你可以按照以下步骤操作:
- 安装 Python 和 Pandas
如果你的系统没有安装 Python 或 Pandas,可以使用以下命令进行安装:
bash
复制代码
sudo apt update
sudo apt install python3 python3-pip -y
pip3 install pandas
- 创建 Python 脚本文件
将你的 Python 代码保存到一个 .py 文件中。例如,创建一个名为 process_data.py 的文件:
bash
复制代码
nano process_data.py
将代码复制并粘贴到 nano 编辑器中,然后保存并退出(按 Ctrl + X,然后按 Y,最后按 Enter):
python
复制代码
import pandas as pd
# 读取 kinship.genome 文件
kinship_df = pd.read_csv('kinship.genome', delim_whitespace=True, header=None)
# 选择所需的列
kinship_df = kinship_df[[1, 3, 9]]
kinship_df.columns = ['Individual1', 'Individual2', 'Kinship']
# 读取 Excel 文件
excel_df = pd.read_excel('your_excel_file.xlsx')
excel_df.columns = ['Individual1', 'Individual2']
# 将所有列转换为字符串类型
excel_df['Individual1'] = excel_df['Individual1'].astype(str)
excel_df['Individual2'] = excel_df['Individual2'].astype(str)
kinship_df['Individual1'] = kinship_df['Individual1'].astype(str)
kinship_df['Individual2'] = kinship_df['Individual2'].astype(str)
# 创建一个新的列,保存排序后的个体编号
excel_df['SortedPair'] = excel_df.apply(lambda row: tuple(sorted([row['Individual1'], row['Individual2']])), axis=1)
kinship_df['SortedPair'] = kinship_df.apply(lambda row: tuple(sorted([row['Individual1'], row['Individual2']])), axis=1)
# 使用排序后的列进行合并,并指定后缀以避免冲突
merged_df = pd.merge(excel_df, kinship_df[['SortedPair', 'Kinship']], on='SortedPair', how='left')
# 查看合并后的列名
print(merged_df.columns)
# 删除中间列,并重命名
merged_df = merged_df[['Individual1', 'Individual2', 'Kinship']]
# 将结果保存为 Excel 文件
merged_df.to_excel('filtered_kinship.xlsx', index=False)
# 打印合并后的 DataFrame
print(merged_df)
- 运行 Python 脚本
使用以下命令在终端中运行你的 Python 脚本:
bash
复制代码
python3 process_data.py
- 检查输出
运行脚本后,终端中会打印合并后的 DataFrame 列名和内容,生成的 filtered_kinship.xlsx 文件将保存在你运行脚本的目录中。
- 处理输出文件
生成的 Excel 文件可以通过常用的 Linux 工具(如 LibreOffice Calc)打开,或者使用以下命令将文件复制或移动到其他位置:
bash
复制代码
cp filtered_kinship.xlsx /path/to/destination/
注意事项:
确保 kinship.genome 和 your_excel_file.xlsx 文件与脚本在同一目录下,或者提供文件的完整路径。
脚本中的文件路径可以是相对路径或绝对路径,确保路径正确以避免 FileNotFoundError 错误。