Pandas合并多个文件并将其保存在同一个文件中

时间:2016-04-07 11:41:37

标签: python numpy pandas

我有4个文件需要与另一个文件合并并保存。这是我到目前为止所尝试的,

keytool -importcert -file [output-file-name].cer -keystore [truststore-file-name].jks -alias [alias]

但是当我打印files_merged时,它只有标题,

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')

我的意思是一个空的数据框,索引'基因'来自档案参考和所有其他文件'有匹配的行,但这样它只返回一个空的数据帧。

最后,我所瞄准的是一个数据框,其中所有行都填充了值,而不是我现在拥有的只是标题和空数据框。

非常感谢任何帮助

谢谢

2 个答案:

答案 0 :(得分:0)

您确定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()

输出:

   a  c  b
0  2  7  3
1  2  7  2
2  2  7  3
3  2  7  1
4  2  7  1
   a  c  b
0  2  9  3
1  2  9  2
2  2  9  3
3  2  9  1
4  2  9  1
   a  c  b
0  2  9  3
1  2  9  2
2  2  9  3
3  2  9  1
4  2  9  1
   a  c  b
0  2  9  3
1  2  9  2
2  2  9  3
3  2  9  1
4  2  9  1

答案 1 :(得分:0)

你可以这样做:

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)