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

驱动器主要项目成像文件夹实验组\>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文件的代码,并且我可以根据文件名访问它们。
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文件中的实际数据进行比较。
我希望这是很好的解释。任何洞察力都是非常有用的。
谢谢
发布于 2021-12-01 21:48:25
这里基本上有两个步骤:
在此之后,您可以遍历groupby,并获得属于单个实验的行。
示例:
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,您就不需要它们了。)
https://stackoverflow.com/questions/70188593
复制相似问题