我有一个像这样的 DataFrame:
import pandas as pd
df = pd.DataFrame(
[
["EUR" , 0.031 , 61.170000 , "ask" ],
["EUR" , 7.642 , 61.360000 , "ask" ],
["EUR" , 0.266 , 61.370000 , "ask" ],
["EUR" , 0.364 , 61.410000 , "ask" ],
["EUR" , 0.101 , 61.100000 , "bid" ],
["EUR" , 23.090 , 60.470000 , "bid" ],
["EUR" , 2.061 , 60.460000 , "bid" ],
["EUR" , 0.133 , 60.450000 , "bid" ],
["USD" , 3.031 , 161.170000, "ask" ],
["USD" , 10.642 , 161.360000, "ask" ],
["USD" , 3.266 , 161.370000, "ask" ],
["USD" , 3.364 , 161.410000, "ask" ],
["USD" , 3.101 , 161.100000, "bid" ],
["USD" , 26.090 , 160.470000, "bid" ],
["USD" , 5.061 , 160.460000, "bid" ],
["USD" , 3.133 , 160.450000, "bid" ],
],
columns = ["base_currency", "base_volume", "price" , "type"]
)
df
我想重新排列行。具体来说,我想对货币进行分组(所有“EUR”行放在一起,所有“USD”行放在一起)然后,对于每种货币,我希望“询问”按降序排列,我希望“出价”是升序排列。现在,如果 DataFrame 仅包含一种货币,我可以通过以下方式正常工作:
_df = df.groupby("type").apply(lambda row: row.sort_values(by = "price"))
_df
我必须处理多种货币,但是当我尝试按以下方式对它们进行分组时
_df = df.groupby(["base_currency", "type"]).apply(
lambda row:
row.sort_values(by = "price") if row['type'] == 'ask' else\
row.sort_values(by = "price", ascending = False),
axis = 1
)
_df
我收到以下错误:
TypeError: <lambda>() got an unexpected keyword argument 'axis'
这里可能发生了什么?我该如何解决?
我是一名优秀的程序员,十分优秀!