Py学习  »  wpercy  »  全部回复
回复总数  2

要对熊猫执行此操作,您可以使用数据创建一个数据帧,添加一个名为 fullPath 按那个分组,然后过滤到最大值 jobEndTimestamp 。像这样:

import pandas as pd

with open('/Users/mona/stream.json', 'r') as f:
    item_dict = json.load(f.read())

df = pd.DataFrame(item_dict['sources'])
df['fullPath'] = df['yamlPath'] + df['yamlName']
grouped = df.groupby('fullPath').apply(lambda d: d[d['jobEndTimestamp'] == d['jobEndTimestamp'].max()])

print grouped['sqlQuery']

会屈服的

fullPath
/app/computer/a/users/boat-notice-data.yaml  3    select from table.b
/app/computer/s/users/car-notice-data.yaml   2    select from table.b
/app/computer/users/ship-notice-data.yml     1    select from table.b
Name: sqlQuery, dtype: object
6 年前
回复了 wpercy 创建的主题 » 没有in的python列表理解

所以这里的语法有点混乱,但是实际发生的是 c.items() 是包含单词及其计数的元组。

更明确的写作方式是:

vocab = [x for (x, count) in c.items() if x>=2]

但也可以这样做:

vocab = [x[0] for x in c.items() if x[1]>=2]

哪里 x 是元组。

也有助于了解 c 实际上看起来像。如果打印c,您会看到:

>>> print c
Counter({'lie': 3, 'is': 2, 'and': 1, 'a': 1, 'There': 1, 'only': 1, 'passion': 1, 'piece': 1})

C项()

>>> print c.items()
[('and', 1), ('a', 1), ('lie', 3), ('is', 2), ('There', 1), ('only', 1), ('passion', 1), ('piece', 1)]