我有这样的数据帧:

file:
      | FIRST | LAST | ID |
---------------------------
0      "ABC"     12    35 
1      "ABC"     14    35
2      "AB"      15    36

现在,我想要的是:

file:
      | FIRST | LAST  | ID |
---------------------------
0      "ABC"   [12,14]  35 
2      "AB"      15     36

对于这个问题,我们假设如果两行的ID相等,那么除了LAST之外的所有值也是相等的。

因此,替换除了last的值之外的所有值,这些值将添加到列表中。

我尝试使用此链接中给出的解决方案: Pandas DataFrame - 将一列的值与相同的索引组合到列表中

我用过这个:

file = file.groupby('ID')

file = file['Last'].unique()

这是我得到的输出:

ID
35    [12, 14]
36        [15]
Name: Last, dtype: object

可能,我在groupby()中遗漏了一些东西。

提前致谢 :)

更新:

我原来的Dataframe有超过100列。 如果两行的ID相等,则除LAST之外的所有值也相等。

#1楼 票数:2

这是你想要的吗?

df.groupby(['FIRST', 'ID']).LAST.apply(lambda x: x.tolist()).reset_index()

    FIRST   ID  LAST
0   AB      36  [15]
1   ABC     35  [12, 14]

#2楼 票数:1 已采纳

鉴于给定ID只有最后两行不同,只需在对它们应用groupby时取第一个值。 对于“LAST”列,如果有多个,请使用其值或将其转换为唯一项列表。

grouping_cols = ['ID', ...]
agg_cols = {col: 'first' for col in df if col not in grouping_cols}
agg_cols['LAST'] = lambda x: x.unique().tolist() if len(x) > 1 else x.iat[0]
>>> df.groupby(grouping_cols, as_index=False).agg(agg_cols)
  ID      LAST FIRST
0  35  [12, 14]   ABC
1  36        15    AB

  ask by Harinder Singh translate from so

未解决问题?本站智能推荐:

2回复

从DataFrame中删除重复的行,但将一列保留为list-Python

我有这样的数据帧: 现在,我想要的是: 对于这个问题,我们假设如果两行的ID相等,那么除了LAST之外的所有值也是相等的。 因此,替换除了last的值之外的所有值,这些值将添加到列表中。 我尝试使用此链接中给出的解决方案: Pandas DataFrame - 将一列
2回复

Python Pandas:删除基于一列的重复行并连接多列的信息

我有一个 Pandas 数据框,它根据一列 (ID) 包含重复项,但在其他几列中具有不同的值。 我的目标是根据 ID 删除重复项,但连接其他列中的信息。 这是我正在使用的示例: 处理后,我希望数据如下所示: 首先,我用“Not Noted”填充 nAn 单元格,以便我可以使用 groupb
1回复

如何通过列中的给定值加速循环对 DataFrame 进行子集化并在 Python 中应用公式

我想知道是否有办法加速这段代码: 其中输入是以下形式的 DataFrame: 有输出: 我知道这是低效的代码,它可以加速,但我不确定如何。 我已经使用了一段时间并且它有效,但我正在尝试重构代码以使其更高效。 我试图用 agg 函数找出 pandas.groupby ,但还没有弄清楚如何用
1回复

根据 Python 中的重复条件将记录复制到另一列

如果已经问过类似的问题,请原谅我。 我是一个新手,正在尝试使用 Python。 我有一个下面的数据框,它是从熊猫函数DataFrame.duplicated() ,基于 'Loc'(groupby) 和 'Category'。 只有重复记录被标记为真/假,其余被标记为“不适用” 识别重复的代码
2回复

Pandas 根据 DataFrame 中的另一列填充 NA 的增量值

我有一个包含每个用户会话的数据框。 其中一栏是迄今为止的会议。 其中一些会话具有空值。 我相信我可以使用 fillna 和 transform 方法来适当地填充数据框。 预期输出数据帧: 试过的代码: 如果我要填充平均值,这很有效,这是我所能想到的。 请提出一些方法。 PS - 会话
3回复

DataFrame:按一列分组并平均其他列

假设我有以下数据帧: 我想创建一个新的 DataFrame,保留 3 列:组( '1'或'2' ),并对列'state'和'value'求平均值,因此 DataFrame 将是:
1回复

熊猫数据框。 聚合列取决于另一列中的值

有一个包含driver_uuid, payment_type, order_price, bonus_payment列的“订单”数据driver_uuid, payment_type, order_price, bonus_payment 。 payment_type 列具有诸如“现金”、“卡”之
2回复

合并 DataFrame 中的行

我有一个 DF,它具有 NER 分类器的结果,如下所示: 此 DataFrame 中还有许多其他列不相关。 现在我想根据它们的句子 ID(= s)和它们的预测标签对令牌进行分组,以将它们组合成一个实体: 通常我会通过简单地使用像data_map = df.groupby(["s"],as_i
3回复

将Pandas数据帧分组一列,根据另一列删除行

我有一个pandas数据框,如下所示: 我想基于“UNIT”对其进行分组,并删除没有[001,002,003]“MACHINE”序列的行。 这意味着因为UNIT“a100”具有序列[001,002,003,001],所以它应该被丢弃,但UNIT“b222”仍然存在,因为无论MACHIN
4回复

合并DataFrame中的行并将值添加为列

我的数据框如下所示: 我想将所有“事件名称”归类为2个新列,其中第1个新列表示“注册”,第2个新列表示“ hv_users”,这将是事件名称为“ hv_users_r”的所有行的总和。 “hv_users_w”。 为了简单起见,“注册”列将包含仅将event_name作为“注册”的