0

我想获取 df 列的不同条目,如果列表中有许多 dfs(具有相同的列)更有效,就像我的实际代码一样。目的是保留“ID”列的所有现有 ID。我的代码有效,但我希望它更有效率。

list_of_dicts = [[{'ID' : A, 
                   'timestamp': '2020-05-10T03:44:50+00:00', 
                   'status': 'online'},
                  {'ID' : A, 
                   'timestamp': '2020-05-10T05:45:50+00:00', 
                   'status': 'online'},
                  {'ID' : B, 
                   'timestamp': '2020-05-10T12:45:50+00:00', 
                   'status': 'online'},
                  {'ID' : C, 
                   'timestamp': '2020-05-10T04:45:50+00:00', 
                   'status': 'online'},
                  {'ID' : A, 
                   'timestamp': '2020-05-10T03:48:50+00:00', 
                   'status': 'offline'}], [{...}{...}...]...]

(不同列表中字典的键总是相同的)

我的代码:

stat = []
for i in range(len(list_of_dicts)):
    stat_i = pd.DataFrame(list_of_dicts[i])
    for x in range(len(stat_i)):
        a = stat_i.loc[x, 'ID']
        if a in stat:
           continue
        else:
           stat.append(a)

预期输出:

stat = ['A', 'B', 'C']
4

1 回答 1

0

你需要遍历你的列表并创建一个数据框来获取唯一的项目,你也可以在没有 pandas 的情况下做到这一点。

使用列表理解。

stat = pd.concat([pd.DataFrame(item) for item in list_of_dicts])['ID'].unique()
array(['A', 'B', 'C'], dtype=object)
于 2020-07-23T13:17:44.533 回答