Python 循环熊猫目录

Python 循环熊猫目录,python,pandas,Python,Pandas,我在一个目录中有许多csv文件,每个目录有两列 miRNA read_counts miR1 10 miR1 5 miR2 2 miR2 3 miR3 100 如果miRNA id相同,我想计算read_计数 结果: miRNA read_counts miR1 15 miR2 5 miR3 100 为此,我写了一个小脚本。然而,我不知道如何在我所有的csv文件中循环,所以我不必每次都复制粘贴文件名并输出

我在一个目录中有许多csv文件,每个目录有两列

miRNA  read_counts  
miR1      10
miR1      5
miR2      2
miR2      3
miR3     100
如果miRNA id相同,我想计算read_计数

结果:

miRNA  read_counts  
miR1      15
miR2      5
miR3     100
为此,我写了一个小脚本。然而,我不知道如何在我所有的csv文件中循环,所以我不必每次都复制粘贴文件名并输出。任何帮助都将不胜感激。谢谢你的帮助

import pandas as pd

df = pd.read_csv("modified_LC1a_miRNA_expressed.csv")
df_new = df.groupby('miRNA')['read_count'].sum()
print(df_new)
df_new.to_csv('sum_LC1a_miRNA_expressed.csv')

尝试查看
glob
模块

from glob import glob
import os

path = "./your/path"
files = glob(os.path.join(path, "*.csv"))

dataframes = []
for file in files:
    df = pd.read_csv(file)
    # rest you would want to append these to dataframes
    dataframes.append(df)
然后,使用
pd.concat
加入数据帧并执行
groupby
操作

编辑1: 根据评论中提到的要求:

results = {}
for file in files:
    df = pd.read_csv(file)
    # perform operation
    df_new = df.groupby('miRNA')['read_count'].sum()
    results[file] = df_new

不想窃取答案。如果我有足够的代表,我会在@Asif Ali的回答下面写上这句话

假设所有输入.csv文件均采用以下格式: “修改了\u文件\u name}.csv的\uu{rest\u”

您希望输出为: “sum_u{same_rest_of_the_file_name}.csv”


谢谢,但是,我真的不想得到一个唯一的文件。我想在每个文件中执行相同的操作,并为每个文件提供一个单独的输出。那么,在这种情况下,您可能希望在循环中执行该操作,并附加结果或将其保存在字典中!尽管如此,上述问题与读取多个文件有关,而与执行操作无关。加上所要求的更改,我希望这能回答您的问题。不知怎么的,我正在处理它。我没有输出。我会继续努力的。非常感谢<代码>结果={}文件中的文件:df=pd.read\u csv(file)#执行操作df\u new=df.groupby('miRNA')['read\u count']].sum()结果[文件]=df\u new df\u new.to.csv()我正在尝试这样做,但也没有给我任何输出。我会继续尝试,看看我是否有一些错误,并在这里更新。谢谢!我调整了最后一行,使其更通用于文件路径。现在试试。仍然不工作,没有输出。你的代码看起来不错,可以理解,所以我不知道我的机器出了什么问题。甚至当我试图打印输出时,我什么也没有得到。这是我逐行得到的:
import pandas as pd import os from glob import glob path=“/Users/user/Desktop/2019.11.28_for_DESEQ2”files=glob(os.path.join(path,“*.csv”):df=pd.read_csv(file)df\u new=df=df.groupby('miRNA')['read_count'].sum()打印(df_new)df_new.to_csv(file.split('modified')[0]+\'sum'+\''.join(file.split('modified')[1:])
尝试从文件路径的开头删除点
import os
import glob

path = "./your/path"
files = glob.glob(os.path.join(path, "*.csv"))

for file in files:
    df = pd.read_csv(file)
    df_new = df.groupby('miRNA')['read_count'].sum()
    print(df_new)
    df_new.to_csv(file.split('modified')[:-1] + \
                  'sum' + \
                  '_'.join(file.split('modified')[-1:]))