如何按组获取跨多组字符串的每个字符串的频率

时间:2018-11-25 10:33:18

标签: python dataframe pivot-table

每组都有一个文本文件,如下所示:

Set1: Cow Goat Lion Mole

Set2: Mole Badger Snake

Set3: Goat Snake Zebra

我的目标是获得每个唯一值在集合中的分布矩阵以及每个值的总计数

        S1 S2 S3  Total
Goat     Y  N Y   ....2

Snake    N  Y Y   ....2

一开始它可能看起来像一个excel问题,但是数据集很大,我不确定数据透视表是否可以做到这一点。我的方法是在python中,但我是新手,正在寻求有关最佳方法的建议 -将每个csv读取到dataframe(concat?) -在所有列中查找唯一值(存储在df中?) 对每个唯一值运行迭代以获得频率 -我不确定如何跟踪设置的计数并生成所需的表格输出 -tx

1 个答案:

答案 0 :(得分:0)

导入必要的软件包

import pandas as pd
import os
import glob

设置所有.txt文件所在的路径

path = r'C:\rawdata_files'                     # use your path
all_files = glob.glob(os.path.join(path, "*.txt"))     # advisable to use os.path.join as this makes concatenation OS independent

列表如下所示:

all_files = ['val1.txt', 'val2.txt']

使用文本文件名作为列,将条目作为行来创建df

df = pd.concat([pd.read_csv(item, names=[item[:-4]]) for item in all_files], axis=1) ##-4 is done as you would not need .txt as your column name

获取列中每个元素的总值:

df.stack().value_counts()