注意:CMPLNT_FR_TM 是投诉时间
我正在尝试绘制这样的图形:
我正在尝试创建一个图表来显示 X 时间有多少投诉/犯罪...
这是我的代码:
#include <iostream>
class Base {
public:
virtual void f() { std::cout << "Base::f()" << std::endl; }
void g() { f(); }
};
class Derived : private Base {
public:
void f() { std::cout << "Derived::f()" << std::endl; }
void h() { g(); }
};
int main(){
Derived d;
d.h(); // prints Derived::f() but if virtual keyword is removed from Base::f() then prints Base::f()
}
错误:
<块引用>键错误:“['CMPLNT_FR_TM'] 不在索引中”
谢谢,
编辑:我跑
filter1 = (new_nypd_complaint_record['BORO_NM'] == 'BROOKLYN')
crime_in_brooklyn_by_time = new_nypd_complaint_record[filter1]
#convert time format from H:M:S to H (int)
crime_in_brooklyn_by_time['CMPLNT_FR_TM'] =
pd.to_datetime(crime_in_brooklyn_by_time['CMPLNT_FR_TM'],
format='%H:%M:%S').dt.hour
groups = crime_in_brooklyn_by_time.groupby(["CMPLNT_FR_TM"])
crime_time = groups.size()
crime_time = crime_time.to_frame(name="NUMBER_OF_CRIME")
crime_time.sort_values(by="CMPLNT_FR_TM", ascending=False)
crime_time.head()[["NUMBER_OF_CRIME","CMPLNT_FR_TM"]].plot(x="CMPLNT_FR_TM", kind="bar")
而我只有一列: NUMBER_OF_CRIME 不知道为什么...?
答案 0 :(得分:1)
确保 csv 文件的标题中不包含空格。因此,您可以返回到 Excel 表并确保其相同,或者您也可以使用它来删除(如果有)
df.columns = df.columns.to_series().apply(lambda x: x.strip())
确保您拼写正确,并且这些列存在于数据框中。
您可以通过执行此操作检查列名称
list(groups.columns.values)
答案 1 :(得分:1)
该列位于您的索引中。您不能按名称引用索引列,并且会收到“KeyError”作为结果。您可以 reset_index()
将列放入 .to_frame()
之后的数据框中。您可以更改:
crime_time = crime_time.to_frame(name="NUMBER_OF_CRIME")
到
crime_time = crime_time.to_frame(name="NUMBER_OF_CRIME").reset_index()
此外,这段代码什么也没做:
crime_time.sort_values(by="CMPLNT_FR_TM", ascending=False)
您应该将其设置回数据框:
crime_time = crime_time.sort_values(by="CMPLNT_FR_TM", ascending=False)