python - Pandas 键错误 : value not in index

标签 python pandas indexing dataframe

我有以下代码,

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/

相关文章:

python - python模块存储在哪里?

python - 比较两个 Pandas 数据帧行的最快方法?

string - Slice 不会在长度上出现 panic ,但在获取索引等于长度的值时会出现 panic

mysql - 读取或写入时的查询速度

python - Numpy 高级索引 : same index used multiple times in +=

python - 如何在 Windows 中离线更新整个 Anaconda Python 发行版?

python - 有没有办法在Python中组合多个列表推导式?

python - 如何标记元音的第一次出现,将前面的辅音移动到结尾

Python Pandas 选择引用列中字符串值的索引值

python - dataframe.groupby 中排序的频率和百分比