簡體   English   中英

通過 Pandas 中的索引從列列表中獲取最大值

[英]Getting the max value from a list of columns by their index in Pandas

我有一個帶有各種列的 dataframe,但我要提取的數據的關鍵部分是在使用日期時間值命名的列中,這些值包含貨幣的浮點數。

我基本上只是想找到每行具有日期值(即 2021-01-15 00:00:00)的任何列的最大值。 我最初使用 list() 來嘗試查找任何帶有“-”的列,但由於格式而猜測我無法直接引用日期時間值?

示例 df:

index, ID, Cost, 2021-01-01 00:00:00, 2021-01-08 00:00:00, 2021-01-15 00:00:00
0, 1, 4000, 40.50, 50.55, 60.99
0, 1, 500, 20.50, 80.55, 160.99
0, 1, 4000, 40.50, 530.55, 1660.99
0, 1, 5000, 40.50, 90.55, 18860.99
0, 1, 9000, 40.50, 590.55, 73760.99

您可以使用列表推導找到“日期”列,該推導將返回包含/的列。 然后,您可以使用max(axis=1)創建列,該列將顯示每行的最高值,例如列:

date_cols = [c for c in list(df) if '/' in c]
df['max_per_row'] = df[date_cols].max(axis=1)

印刷:

   index  ID  Cost  ...  08/01/2021 00:00  15/01/2021 00:00  max_per_row
0      0   1  4000  ...             50.55             60.99        60.99
1      0   1   500  ...             80.55            160.99       160.99
2      0   1  4000  ...            530.55           1660.99      1660.99
3      0   1  5000  ...             90.55          18860.99     18860.99
4      0   1  9000  ...            590.55          73760.99     73760.99

DataFrame.iloc用於 select 的所有列,沒有第一個 2:

df['new'] = df.iloc[:, 2:].max(axis=1)

如果需要 select 浮點列使用DataFrame.select_dtypes

df['new'] = df.select_dtypes('float').max(axis=1)

對於使用DataFrame.filter的列-

df['new'] = df.filter(like='-').max(axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM