python - 根据第三列设置列中具有共同值的行的日期

标签 python pandas dataframe

我有一个数据框:

df1

S.No   T.No    Amt    Date
1      34       10    20-6-2021
2      34       30    21-6-2021
3      34       20    22-6-2021
4      21       50    23-6-2021

目标:在相同 T.No 的情况下,所有这些日期都应该是与最高金额相关的日期。

输出:

S.No   T.No    Amt    Date
1      34       10    21-6-2021
2      34       30    21-6-2021
3      34       20    21-6-2021
4      21       50    23-6-2021

感谢任何帮助。

最佳答案

使用DataFrameGroupBy.idxmax对于索引,这里是日期,因为由 DataFrame.set_index 转换与 GroupBy.transform到新专栏:

df['Date'] = df.set_index('Date').groupby('T.No')['Amt'].transform('idxmax').to_numpy()
print (df)
   S.No  T.No  Amt       Date
0     1    34   10  21-6-2021
1     2    34   30  21-6-2021
2     3    34   20  21-6-2021
3     4    21   50  23-6-2021

或者使用 transform Series.map :

df['Date'] = df['T.No'].map(df.set_index('Date').groupby('T.No')['Amt'].idxmax())

关于python - 根据第三列设置列中具有共同值的行的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085438/

相关文章:

Python:从具有所需模块的 .py 文件导入函数

python - Pandas 分配 Lambda 函数

python - Pandas iterrows() row.get() 方法返回系列而不是单元格值

python - 在 Pandas 中,如何复制列中具有特定值的所有行,并更改重复项中的该列值?

r - 使用 R,迭代数据帧,对每个数据帧执行数学运算,将结果附加到新数据帧中

python - 循环期间释放内存

Python: 'thread._local object has no attribute ' 待办事项'

python - 使用 pandas 获取开始日期和结束日期之间的工作日

python - 根据列条件添加包含来自另一个数据框的值的列

r - tidyr::pivot_wider() 重新排序按 `name_from` 分组的列名称