【问题标题】:Pandas series is assigning index rather than value to another series熊猫系列正在为另一个系列分配索引而不是值
【发布时间】:2022-01-01 20:21:18
【问题描述】:

我正在寻找类似的解决方案,但我找不到它并且时间不多了,所以我必须写下这个问题,请帮助我。 首先,我使用 pandas 来获取输出,所以请帮助我。
所以我想要实现的是我想将一组特定的 groupby 分配给另一行 因此,例如,我在 groupby 中有一个组,我想要在同一行的另一列中,所以我将此值分配给另一列,因为它是按行写入的,所以它将写入不同列的同一行(我怀疑它也是,但在克服当前的障碍后会看到)但我没有获取组的值,而是在其他列示例中获取组的行号如下:

group_count=df['id'].value_counts()
group_count=group_count.to_dict()

for i in group_count:
    for j in range(group_count[i]):
        df['masked_id_'+str(j+1)].iloc[j:j+1]=gk.get_group(i)['masked_id'].iloc[j:j+1]

我想要实现的只是将重复 id 的 masked_id 转移到不同的列中,例如我有 3 个相似的 id 说:

 id    masked_id
1 23234 XXXX4
2 23234 XXXX4
3 23234 XXXX4

把它变成下面的样子:

  id    masked_id_1 masked_id_2 masked_id_3
1 23234 XXXX4       XXXX4       XXXX4

但我得到的是:

id      masked_id_1 masked_id_2 masked_id_3
23234   1           2           3

寻求任何指导以向类似方向传播,非常感谢您抽出时间。

更新(关于gk的信息):

gk = df.groupby(by='id')

【问题讨论】:

  • 试试:df.groupby('id')['masked_id'].apply(list).apply(pd.Series)
  • 其实我已经做过了,gk就是那部分我忘了说谢谢@Corralien提醒我

标签: python pandas dataframe pandas-groupby


【解决方案1】:

试试这个:

new_df = df.groupby('id')['masked_id'].agg(list).agg(pd.Series)
new_df.columns = 'masked_id_' + (new_df.columns+1).astype(str)
new_df = new_df.reset_index()

输出:

>>> new_df
      id masked_id_1 masked_id_2 masked_id_3
0  23234       XXXX4       XXXX4       XXXX4

【讨论】:

    猜你喜欢
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2016-04-19
    • 2020-08-19
    • 2015-10-20
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多