gpt4 book ai didi

python - 保持具有最大重叠的相似行 Pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:24 24 4
gpt4 key购买 nike

我有一个问题 看起来像(示例)的数据框:

   index  ID   time     value
0 1 2h 10
1 1 2.15h 15
2 1 2.30h 5
3 1 2.45h 24
4 2 2.15h 6
5 2 2.30h 12
6 2 2.45h 18
7 3 2.15h 2
8 3 2.30h 1

我想保持 ID 行重叠的最大数量。所以:

   index  ID   time    value
1 1 2.15h 15
2 1 2.30h 5
4 2 2.15h 6
5 2 2.30h 12
7 3 2.15h 2
8 3 2.30h 1

我知道我可以创建一个具有唯一时间的 df,然后将每个 ID 单独合并到它,然后保留每次都填充所有 ID 的所有行,但这是非常不切实际的。我看过但没有找到可能更聪明的方法的答案。有人知道如何使它更实用吗?

最佳答案

使用:

cols = df.groupby(['ID', 'time']).size().unstack().dropna(axis=1).columns

df = df[df['time'].isin(cols)]
print (df)
ID time value
1 1 2.15h 15
2 1 2.30h 5
4 2 2.15h 6
5 2 2.30h 12
7 3 2.15h 2
8 3 2.30h 1

详细信息:

首先通过groupby聚合DataFramesize , 然后通过 unstack reshape - NaN 是为非重叠值创建的:

print (df.groupby(['ID', 'time']).size().unstack())
time 2.15h 2.30h 2.45h 2h
ID
1 1.0 1.0 1.0 1.0
2 1.0 1.0 1.0 NaN
3 1.0 1.0 NaN NaN

使用 dropna 删除列并获取列名:

print (df.groupby(['ID', 'time']).size().unstack().dropna(axis=1))
time 2.15h 2.30h
ID
1 1.0 1.0
2 1.0 1.0
3 1.0 1.0

最后一个过滤器列表由 isinboolean indexing :

df = df[df['time'].isin(cols)]

关于python - 保持具有最大重叠的相似行 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51857620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com