如何一组一组地获得多组字符串中每个字符串的频率

2024-04-28 07:04:23 发布

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

我有一个文本文件为每一套如下

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读取到数据帧(concat?) -在所有列中查找唯一值(存储在df中?) -对每个唯一值运行迭代以获得频率 -我不知道如何跟踪集合计数,然后生成所需的表格输出 -德克萨斯州


Tags: 数据方法计数价值文本文件snakezebracow
1条回答
网友
1楼 · 发布于 2024-04-28 07:04:23

导入必要的包

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

相关问题 更多 >