根据另一行的值是不是已被索引,在 pandas 中设置行索引
Posted
技术标签:
【中文标题】根据另一行的值是不是已被索引,在 pandas 中设置行索引【英文标题】:Set row index in pandas based on whether another row's value has already been indexed or not根据另一行的值是否已被索引,在 pandas 中设置行索引 【发布时间】:2022-01-14 08:38:58 【问题描述】:我想通过 Pandas 完成的是:
-
假设我们有一个这样的 Pandas DataFrame:
transaction_code
1 4373-36
2 3626-68
3 3626-68
4 3281-23
5 4721-44
...
101 6273-56
102 2836-78
103 1657-28
104 3281-23
105 5323-64
我想创建一个名为“transaction_code_new_index”的新列,它将包含与当前现有索引一样的索引,只要一个 transaction_code 重复(即代码 6273-75 可能存在 3 次),我想要索引这些代码对它们来说是相同的(即,对于每个匹配 6273-75 的事务代码,它们的索引必须相同)
例子:
transaction_code transaction_code_new_index
1 4373-36 1
2 3626-68 2
3 3626-68 2 (because 3626-68 has already been indexed before)
4 3281-23 3
5 4721-44 4
...
101 6273-56 100
102 2836-78 101
103 1657-28 102
104 3281-23 3 (because 3281-23 has already been indexed before)
105 5323-64 103
谢谢。
【问题讨论】:
嘿 Lucca,我建议您查看 pandas groupby 函数:pandas.pydata.org/pandas-docs/stable/reference/api/…。它将允许您执行上述任务以及更多其他任务。 感谢您的提示,迈克尔! :) 【参考方案1】:您可以获取每个组的最小索引。使用 transform 会将结果分配回相应的行。
df['new_index'] = df.groupby('transaction_code')['transaction_code'].transform(lambda x: x.index.min())
输出
transaction_code new_index
1 4373-36 1
2 3626-68 2
3 3626-68 2
4 3281-23 4
5 4721-44 5
【讨论】:
谢谢你,工作就像一个魅力:)以上是关于根据另一行的值是不是已被索引,在 pandas 中设置行索引的主要内容,如果未能解决你的问题,请参考以下文章
06 pandas DataFrame - 数据过滤、NaN处理、统计方法
我想要一个 pandas 脚本根据第一个电子表格中的值将一个 excel 表中的值排列到另一个表中