我有一个名为stock1
的数据框,由505个股票组成,它们的百分比变化,每列共有52行。
我想找到每周最后一行最大值的股票,所以我做了:
import pandas as pd
st1 = pd.DataFrame({"FIN_MAX": stock1.tail(1).max().sort_values(ascending=False)})
上面的代码最初有效,但现在它会抛出错误。
TypeError: '>' not supported between instances of 'float' and 'str'
我能得到的最接近的是如果我放弃sort_values(ascending=False)
,但是这些值并没有按从高到低的顺序排列。
st1 = pd.DataFrame({"FIN_MAX":stock1.tail(1).max()})
我还尝试了以下代码,它也会产生与上述相同的错误。
st1.sort_values(["FIN_MAX"], ascending=False)
我在Jupyter Notebook上使用Python 3.6.1。 任何帮助或替代方案都会非常感激。
当我连接各个csv文件中的所有股票时,由于创建了一个名为Unnamed: 0
的列,似乎错误仍然存在。
一旦我del stock1["Unnamed: 0"]
,它似乎已经解决了这个问题。
答案 0 :(得分:1)
IIUC:
获取具有最大值的股票
stock1.iloc[-1].idxmax()
获取具有最大值和值
的股票stock1.iloc[-1].nlargest(1)
获取具有最大值及其值的n
个股票
n = 5
stock1.iloc[-1].nlargest(n)