就做个俗人 2022-01-23 13:52 采纳率: 80%
浏览 20
已结题

python 使用DataFrame将三个文件merge在一起 涉及到文件转换

以下是代码,但是跑不出来结果,可能是字典的那一步value没写如成功,后面显示的空的DataFrame,但是现在不知道怎样去修改?

import os
import pandas as pd

files_dir = "C:/Users/lanlan/Desktop/filefas_join/"
data_dict = dict()
for file_name in os.listdir():
    if os.path.splitext(file_name)[1].lower() in '.fas':
        file_name_dir = os.path.join(files_dir, file_name)
        with open(file_name_dir) as file_data:
            data_dict[file_name] = {}
            print(data_dict)
            i = 0
            for line in file_data:
                line = line.strip('\n')
                i = i + 1
                if line.startswith('>'):
                    key = line
                    print(key)
                    list_need = []
                data_dict[file_name][key] = list_need

df_all = pd.DataFrame({'key': [], 'value': []})
print(df_all)
for dict_name in data_dict:
    key_ls = []
    value_ls = []
    dict_name_ls = dict_name.split('.')[0]
    data = {'key': key_ls, dict_name_ls: value_ls}
    df_A = pd.DataFrame.from_dict(data)
    df_all = pd.merge(df_all, df_A, on='key', how='outer')

df_all = df_all.sort_values(by='key')
print(df_all)
df_all.to_excel(files_dir + 'snpstr.xlsx')

三个文件的格式是一样的,都是以下格式:

img


  • 写回答

1条回答 默认 最新

  • heianduck 2022-01-23 14:17
    关注
    if os.path.splitext(file_name)[1].lower() in '.fas':
    改成
    if '.fas' in os.path.splitext(file_name)[1].lower():
    

    试试?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月22日
  • 已采纳回答 5月14日
  • 创建了问题 1月23日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探