【发布时间】:2021-04-28 23:52:43
【问题描述】:
冲突行是两行具有相同的特征但具有不同的标签,如下所示:
feature label
a 1
a 0
现在,我想将这些冲突行合并到仅从它们的计数中获取的一个标签。如果我有更多a 1,那么a 将被标记为1。否则,a 应标记为0。
我可以通过df1=df.groupy('feature', as_index=Fasle).nunique(),df1 = df1[df1['label]==2]' 找到这些冲突,它们的值按df2 = df.groupby("feature")["label"].value_counts().reset_index(name="counts") 计算。
但是如何在一个 Dataframe (df_conflict = ?) 中找到这些冲突的行及其计数,然后按计数合并它们 (df_merged = merge(df))?
我们以df = pd.DataFrame({"feature":['a','a','b','b','a','c','c','d'],'label':[1,0,0,1,1,0,0,1]}) 为例。
feature label
0 a 1
1 a 0
2 b 0
3 b 1
4 a 1
5 c 0
6 c 0
7 d 1
df_conflict 应该是:
feature label counts
a 1 2
a 0 1
b 0 1
b 1 1
而df_merged 将是:
feature label
a 1
b 0
c 0
d 1
【问题讨论】:
-
我需要两个不同的数据框,
df_conflict用于显示 conflit 行及其计数,以及一个新的df用于合并结果。 -
请查看我最新版本的问题。似乎我无法在注释中粘贴多行代码。谢谢!
-
不确定
and then merge them by counts, (df_merged = merge(df))?是什么意思,可以解释更多吗? -
当然可以。
df_conflict似乎与我的想法有些不同。它应该只包含冲突行。同时,我对您如何获得df_merged感到困惑。它看起来就像给定列的drop_duplicates。 value_counts 如何影响? -
在上一个答案中,如果使用
value_counts值默认排序,因此每个组的第一行具有最大计数。为答案的第二部分添加了答案。
标签: pandas