【发布时间】:2021-07-17 20:08:18
【问题描述】:
我有以下数据框:
import pandas as pd
array = {'id': [1, 1, 1, 2, 2, 2, 3, 3], 'A': [False, False, True, False, False, False, True, True],
'B': [False, True, True, False, True, False, False, False]}
df = pd.DataFrame(array)
df
我想在一行中表示每个 id。如果特定列上此 id 的所有值均为 False,则其值应为 False。如果至少有一个是 True - 那么它应该是 True。 我已经开始了:
df.groupby(['id']).sum()
之后,我会将高于 0 的每个值都转换为 1。 这很好用,但我的原始数据框有 2,000,000 行和 14,000 列,因此需要几天时间......
还有其他更快的想法来完成这项任务吗?
【问题讨论】:
-
我希望
df.groupby(['id']).any()工作得快得多,因为any()应该是短路的。令人惊讶的是,它实际上更慢。 -
@jezrael - 有什么想法吗?会重视您的帮助!
标签: pandas dataframe pandas-groupby