6つのファイルが複数あり、各ファイルには名前を含む列が1つしかありません。これらすべてのファイルを読み、次のように1つのファイルにマージしたいと思います。
file1 file2 file3 file4 file5 file6 Count
adam adam adam adam adam adam 1
Roy NA Roy Roy NA NA 0.5
NA Sam Sam NA NA NA 0.33
adam
これは、すべてのファイルにRoy
3つのファイル(file1、3、4)とSam
2つのファイル(file2、3)に対応する名前があることを示します。最後の列は追加され、すべてのファイルをマージして計算されます。すべてのファイルに表示される名前の割合を提供します。たとえば、Royの場合、6つのファイルのうち3つで観察さCount
れます。3/6 = 0.5
結果のデータフレームはcolnames
実際のファイル名を表す必要があります。私が読んでいるファイルの名前が等だとしましょfile1.txt
うfile2.txt
。
どんな助けでも大変感謝します。ありがとうございます。
ベストアンサー1
Pythonスクリプトを作成して、各ファイルを読み取り、名前をキーとして含め、名前の数を値として数える辞書を作成できます。最後に、各値をファイル数で割ることができます。
このような:
#!/usr/bin/env python
filelist= ['file1.txt', 'file2.txt', 'file3.txt', 'file4.txt']
dictionary= dict()
for file in filelist:
fd= open(file, "r")
for name in fd.readlines():
name= name.strip()
if name in dictionary.keys():
dictionary[name]+= 1
else:
dictionary[name]= 1
fd.close()
for x in dictionary.keys():
print("{0} : {1}".format(x, float(dictionary[x])/len(filelist)))
編集する:
Linuxでは、Pythonがデフォルトで使用されます。コピーしてファイルに貼り付けて実行します。動作しています。