就做个俗人 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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?