我有以下代码,
df = pd.read_csv(CsvFileName)
p = df.pivot_table(index=['Hour'], columns='DOW', values='Changes', aggfunc=np.mean).round(0)
p.fillna(0, inplace=True)
p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]] = p[["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]].astype(int)
它一直有效,直到 csv 文件没有足够的覆盖范围(所有工作日)。例如,对于以下 .csv 文件,
DOW,Hour,Changes
4Wed,01,237
3Tue,07,2533
1Sun,01,240
3Tue,12,4407
1Sun,09,2204
1Sun,01,240
1Sun,01,241
1Sun,01,241
3Tue,11,662
4Wed,01,4
2Mon,18,4737
1Sun,15,240
2Mon,02,4
6Fri,01,1
1Sun,01,240
2Mon,19,2300
2Mon,19,2532
我会收到以下错误:
KeyError: "['5Thu' '7Sat'] not in index"
它似乎有一个非常简单的修复方法,但我对 Python 太陌生了,不知道如何修复它。
最佳答案
使用 reindex
获取您需要的所有列。它将保留已经存在的那些,否则将其放入空列中。
p = p.reindex(columns=['1Sun', '2Mon', '3Tue', '4Wed', '5Thu', '6Fri', '7Sat'])
因此,您的整个代码示例应如下所示:
df = pd.read_csv(CsvFileName)
p = df.pivot_table(index=['Hour'], columns='DOW', values='Changes', aggfunc=np.mean).round(0)
p.fillna(0, inplace=True)
columns = ["1Sun", "2Mon", "3Tue", "4Wed", "5Thu", "6Fri", "7Sat"]
p = p.reindex(columns=columns)
p[columns] = p[columns].astype(int)
关于python - Pandas 键错误 : value not in index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462920/