首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫通过它们的相关内容来迭代数据。

熊猫通过它们的相关内容来迭代数据。
EN

Stack Overflow用户
提问于 2021-12-01 17:21:44
回答 1查看 65关注 0票数 1

标题可能不是我想要做的事情的全部描述,但我将尝试充分解释我正在做的工作。我有一个熊猫数据表,它包含了目录中文件中的所有数据。

驱动器主要项目成像文件夹实验组\>0 Z: koch SARS-CoV-2项目成像SmF_SCoV_5'UTR >1 Z: koch SARS-CoV-2项目成像SmF_SCoV_5'UTR > 79 Z: koch SARS-CoV-2项目成像SmF_SCoV_5'UTR > 80 Z: koch SARS-CoV-2项目成像SmF_SCoV_5'UTR > 91 Z: koch非典-CoV-2项目成像SmF_SCoV_5'UTR > 92 Z: koch SARS-CoV-2项目成像SmF_SCoV_5'UTR >实验Rep文件名\0 20210424_CMV_SARS_5'UTR 1> 20210424_CMV_SARS_5'UTR mRNA_MAX_Cell10_Spot_Stats.csv 79 > 20210424_CMV_SARS_5'UTR AVG_BG_MAX_Cell10.tif 80 > 20210424_CMV_SARS_5'UTR AVG_MAX_Cell10.tif 91 > 20210424_CMV_SARS_5'UTR MAX_Cell09.tif 92 > 20210424_CMV_SARS_5'UTR MAX_Cell10。tif >>路径7 0 Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.NaN 1> Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.NaN 79 > Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.公司名称:0 0 0> Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.公司名称:0 91 > Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.公司名称:0 92 > Z:\koch\SARS-CoV-2项目\成像\SmF_SCoV_5‘.None

在这个dataframe中,我有csv文件和tif文件。我已经有了将读取所有csv文件的代码,并且我可以根据文件名访问它们。

代码语言:javascript
复制
FINDPATH = Path("Z:\koch\Imaging")
FILEEXT = ("*.csv")

files_dfs = {}

for csv_file in FINDPATH.rglob(FILEEXT):
    filename = csv_file.name
    df = pd.read_csv(csv_file)
    files_dfs[filename] = df

每个csv文件都有各自的tif文件。例如,mRNA_MAX_Cell09_Spot_Stats.csv来自MAX_Cell09.tif。

现在我需要想出一种方法来迭代数据文件,只获取原始的tif文件(全部名为MAX_Cell.),输出文件路径,最后得到相应的csv名称。

目标是能够获取tif文件并在硅模拟中进行,并将其与csv文件中的实际数据进行比较。

我希望这是很好的解释。任何洞察力都是非常有用的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-01 21:48:25

这里基本上有两个步骤:

  1. 获取单元格号,这样我们就可以匹配属于同一实验的文件和单元格号。
  2. 使用groupby()执行匹配。

在此之后,您可以遍历groupby,并获得属于单个实验的行。

示例:

代码语言:javascript
复制
s = """Drive,Main,Project,Imaging Folder,Experimental Group,Experimental Rep,File Name,Path
0,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,mRNA_MAX_Cell09_Spot_Stats.csv,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\mRNA_MAX_Cell09_Spot_Stats.csv
1,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,mRNA_MAX_Cell10_Spot_Stats.csv,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\mRNA_MAX_Cell10_Spot_Stats.csv
79,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,AVG_BG_MAX_Cell10.tif (RGB).tif,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\AVG_BG_MAX_Cell10.tif (RGB).tif
80,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,AVG_MAX_Cell10.tif,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\AVG_MAX_Cell10.tif
91,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,MAX_Cell09.tif,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\MAX_Cell09.tif
92,Z:,koch,SARS-CoV-2 Project,Imaging,SmF_SCoV_5'UTR,20210424_CMV_SARS_5'UTR,MAX_Cell10.tif,Z:\koch\SARS-CoV-2 Project\Imaging\SmF_SCoV_5'UTR\MAX_Cell10.tif
"""
import pandas as pd
import io

df = pd.read_csv(io.StringIO(s))


# Extract the cell number in the filename of each file
df['Cell Num'] = df['File Name'].str.extract('Cell([0-9]+)[._]')
# Extract the filetype for each file
df['File Type'] = df['File Name'].str.extract('\\.([a-z]{2,4})')
# Keep only files which are either csv or tif files of the form MAX_CellNN.tif
df = df.loc[(df['File Type'] == 'csv') | (df['File Name'].str.match("MAX_Cell[0-9]+.tif"))]

for group_id, group_df in df.groupby(["Experimental Group", "Experimental Rep", "Cell Num"]):
    experimental_group, experimental_rep, cell_num = group_id
    print(experimental_group, experimental_rep, cell_num)
    file_group = group_df['File Name'].to_list()
    print(file_group)

(前八行只是为了使示例具有可重复性。如果您已经拥有了dataframe,您就不需要它们了。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70188593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档