簡體   English   中英

從字符串數字的熊貓列表中返回最大整數值

[英]Returning a max integer value from a pandas list of string numbers

我有一個像這樣的 df,其中 df['value_list'] 有dtype對象:

                     value_list  
0             ['200000.00', '100.00', '25.00']                 
1                       ['860000.00']                          
2                  ['148000.00', '25.00']                      

我想要一個新列max_value ,它將是該列表中字符串數字的最大整數數值。 所以上面的預期結果:

                     value_list                              max_value
0             ['200000.00', '100.00', '25.00']                 200000
1                       ['860000.00']                          860000
2                  ['148000.00', '25.00']                      148000

我做了什么:

# covert strings to numerical values
df['value_list'] = df['value_list'].apply(lambda x: ast.literal_eval(x))
# get max values from list and if list is empty temporarily assign -1
df['max_value'] = df['value_list'].apply(lambda x: max(x) if len(x) >= 1 else -1)
df['max_value'] = df['max_value'].apply(lambda x: round(float(x)) if x != -1 else None)

這似乎有效,但我實際上並沒有得到最大值。 我得到的結果:

                     value_list                              max_value
0             ['200000.00', '100.00', '25.00']                  25
1                       ['860000.00']                          860000
2                  ['148000.00', '25.00']                       25

有沒有更好更正確的方法來做到這一點? 請指教。

一種方法:

import pandas as pd

# input toy data 
df = pd.DataFrame([[['200000.00', '100.00', '25.00']],
                   [['860000.00']],
                   [['148000.00', '25.00']]], columns=["value_list"])

df["max_value"] = df["value_list"].apply(lambda x: max(float(e) for e in x))
print(df)

輸出

                   value_list  max_value
0  [200000.00, 100.00, 25.00]   200000.0
1                 [860000.00]   860000.0
2          [148000.00, 25.00]   148000.0

如果您有空列表並想返回-1 ,只需執行以下操作:

df["max_value"] = df["value_list"].apply(lambda x: max(float(e) for e in x) if x else -1)

暫無
暫無

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

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