快速提问:
我有以下情况(表): Imported data frame
现在我想实现的是以下内容(或这些行中的内容,不必完全相同)
我不希望以下几列,所以我将其删除
data.drop(data.columns[[0,5,6]], axis=1,inplace=True)
我以为下面的代码行可以解决它,但是我缺少了什么?
pivoted = data.pivot(index=["Intentional homicides and other crimes","Unnamed: 2"],columns='Unnamed: 3', values='Unnamed: 4')
产生
ValueError:传递的值的长度为3395,索引表示2
与第8个问题不同的是,我不需要任何聚合函数,只是将值保持不变。
可以在以下位置找到数据:Data
答案 0 :(得分:0)
方法 pandas.DataFrame.pivot 的问题在于它不处理索引中的重复值。解决此问题的一种方法是改用pandas.pivot_table函数。
df = pd.read_csv('Crimes_UN_data.csv', skiprows=[0], encoding='latin1')
cols = list(df.columns)
cols[1] = 'Region'
df.columns = cols
pivoted = pd.pivot_table(df, values='Value', index=['Region', 'Year'], columns='Series', aggfunc=sum)
尽管有 aggfunc 参数,它也不应该求和,但是会抛出 pandas.core.base.DataError:如果没有参数,则没有要聚合的数字类型提供。