我有一个数据框:
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/