【发布时间】:2020-12-15 22:48:46
【问题描述】:
我有一个包含 9 列和 6 行的 txt 文件。前 8 列是以下值之一:“1”、“2”和“3”。我将这些列从“A”命名为“H”。我将最后一列命名为:“类”。 最后一列是名称:“HIGH”。这是txt文件(data.txt):
1,1,1,1,2,1,1,3,HIGH
1,1,1,2,2,1,1,3,HIGH
1,1,1,1,1,1,1,3,HIGH
1,1,1,2,1,1,1,3,HIGH
1,1,1,3,2,1,1,3,HIGH
1,1,1,2,1,2,1,3,HIGH
我正在尝试计算每列中每个值的数量并打印一个应该包含 3 个组件的列表,包括该列中“1”、“2”和“3”值的数量分别。例如,在第一列(例如 A)中,所有值都是“1”。我希望得到:A : [6,0,0]。对于所有值为“3”的第 8 列(例如 H),我希望得到:H : [0,0,6] 或第四列(例如 D)我有两个“ 1”,三个“2”和一个“3”。所以我期望:D:[2,3,1]。我尝试使用 pandas 和 collection 来完成它。这是我所做的:
import pandas as pd
from collections import Counter
df = pd.read_csv('data.txt')
df.columns = ['A','B','C','D','E','F','G','H','class']
X = df.ix[:, 0:8].values
y = df.ix[:, 8].values
deg = ['HIGH']
names = ['A','B','C','D','E','F','G','H']
for j in range(0, 8):
freqs = Counter(X[y == deg[0], j])
print(names[j],':',list(freqs.values()))
上述代码的输出是空列表。这是它返回的内容:
A : []
B : []
C : []
D : []
E : []
F : []
G : []
H : []
如何修改上面的代码来得到我想要的? 谢谢!
【问题讨论】:
标签: python-3.x pandas collections counter