Pandas合并到多个文件并保存在同一个fi上

2024-04-24 08:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有4个文件,我需要与另一个文件合并并保存它。这是我迄今为止所做的努力

ref ='/home/user/Dir/Reference'
ref = pd.read_csv(ref, sep='\t', header=0)
#T_seq = T_seq.reset_index(drop=False)
#data_frames = []
for filename in file_DE:
    name   = os.path.basename(os.path.normpath(filename))
    files  = pd.read_csv(filename, sep='\t', header=0)
for eachfile in files:
    files_merged  = pd.merge(eachfile, ref , left_on='Gene' , right_on= 'Gene')

但当我打印合并的文件时,只有页眉

^{pr2}$

我的意思是一个空的数据帧,来自file ref的索引'Gene'和所有其他的'files'都有matcching行,但是这样只返回一个空的数据帧。在

最后,我的目标是一个所有行都填充了值的数据帧,而不是像我现在这样只有头和空数据帧。在

真的很感谢你的帮助

谢谢你


Tags: 文件csv数据inrefforreadfiles
2条回答

您确定Gene列的交集不是空的吗?在

因为这是有效的:

from pandas import DataFrame, merge

from numpy.random import randint, seed

seed(4321)

shape = (10,2)

ref = DataFrame(
    data=randint(1, 4, shape),
    columns=['a','b']
)

csvs = [DataFrame(randint(1, 13, shape), columns=['a','c']) for _ in range(4)]

for csv in csvs:
    print merge(
        csv, ref,
        left_on='a',
        right_on='a'
    ).head()

带输出:

^{pr2}$

你可以这样做:

sep = r'\s+'
ref ='/home/user/Dir/Reference'
ref = pd.read_csv(ref, sep=sep, header=0)

for filename in file_DE:
    name = os.path.basename(os.path.normpath(filename))
    df   = pd.read_csv(filename, sep=sep, header=0)
    pd.merge(df, ref, on='Gene').to_csv('merged_' + name, index=False)

相关问题 更多 >