我有一個按從最重要到最不重要的順序排列的值串列,如果找不到值,它會搜索下一個值,依此類推:
import pandas as pd
markets_base = [
'Over/Under 8.5 Goals','First Half Goals 1.5','Over/Under 4.5 Goals','First Half Goals 0.5'
]
markets_df = pd.DataFrame({
'competition': ['a','b','c'],
'market_name': ['First Half Goals 1.5','Over/Under 4.5 Goals','First Half Goals 0.5']
})
for mkt_base in markets_base:
if len(markets_df.loc[markets_df['market_name'] == mkt_base]) > 0:
final_row = markets_df.loc[markets_df['market_name'] == mkt_base].iloc[:1]
break
print(final_row)
是否有更專業的方法來獲得相同的結果,或者這是正確的模型?
uj5u.com熱心網友回復:
一個可能的解決方案涉及將您的“market_name”列轉換為分類,如此答案中所述:Custom sort in pandas dataframe
在您的情況下,這可以解決問題:
import pandas as pd
markets_df = pd.DataFrame({
'competition': ['a', 'b', 'c', 'd', 'e'],
'market_name': ['First Half Goals 1.5', 'Over/Under 4.5 Goals', 'First Half Goals 0.5', 'Over/Under 8.5 Goals', 'Over/Under 4.5 Goals']
})
markets_base = [
'Over/Under 8.5 Goals', 'First Half Goals 1.5', 'Over/Under 4.5 Goals', 'First Half Goals 0.5'
]
#here's the thing
markets_df["market_name"] = pd.Categorical(
markets_df['market_name'], markets_base)
final_row = markets_df.sort_values("market_name").iloc[:1]
print(final_row)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478499.html
上一篇:熊貓適用于大型資料框的分配
