dits

时间:2017-04-07 14:22:17

标签: python

我的文件包含people_idroom_id列。我把所有文件读成dict。

people_id room_id
1   8
2   32
3   8
4   47
5   12
6   8

和代码

report_keys = ['people_id', 'room_id']
report = []
with open("file.txt") as f:
    for line in f:
        line = line.strip().split('\t')
        d = dict(zip(report_keys, line))
        report.append(d)

我想计算每个房间的人数。例如。 for room_id这间客房的人数= 3,客房内的人数平均。

输出:

Room_id 8 = 3 people
Room_id 32 = 1 people
Room_id 47 = 1 people
Room_id 12 = 1 people

平均入住一个房间的人数。

我尝试这样做

for key, value in report:
    print(key, len([item for item in value if item]))

但我的代码只打印相同的值

2 个答案:

答案 0 :(得分:1)

我认为您可以更改代码的读取方式

report = {}
with open("file.txt") as f:
    for line in f:
        line = line.strip().split('\t')
        report[line[1]] = report.get(line[1],0) + 1

答案 1 :(得分:0)

如何使用pandas

import pandas as pd

df = pd.read_csv("file.txt")

df.groupby('room_id').size().to_dict()
{8: 3, 32: 1, 12: 1, 47: 1}