Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对数据帧每行的列求和,并在多级索引数据帧中添加新列_Python_Python 3.x_Pandas - Fatal编程技术网

Python 对数据帧每行的列求和,并在多级索引数据帧中添加新列

Python 对数据帧每行的列求和,并在多级索引数据帧中添加新列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我试图对多级数据帧上每行的列求和,并将计算出的值添加到一个新列上 我使用的数据集是seaborn库中的'flights'数据集 作为pd进口熊猫 进口海运 #从seaborn库加载数据集 flights=seaborn.load_数据集(“flights”) # !!!编辑-我添加了这一行,因为它丢失了!!! #为加载的数据帧设置索引 航班索引=航班。设置航班索引(['年','月']) #取消对dataframe的堆栈并为每个月创建列 flights\u unstacked=已索引的航班。un

我试图对多级数据帧上每行的列求和,并将计算出的值添加到一个新列上

我使用的数据集是seaborn库中的'flights'数据集


作为pd进口熊猫
进口海运
#从seaborn库加载数据集
flights=seaborn.load_数据集(“flights”)
# !!!编辑-我添加了这一行,因为它丢失了!!!
#为加载的数据帧设置索引
航班索引=航班。设置航班索引(['年','月'])
#取消对dataframe的堆栈并为每个月创建列
flights\u unstacked=已索引的航班。unstack()
#计算每行的和
sum\u行=未堆叠的航班。sum(轴=1)
求和行整形=求和行值整形(12,1)
###将每行的总和放入新列中###
未列舱位的航班【乘客】、【总计】=总计行
#或者,
航班未加包装[‘乘客’,‘总数]=总数(行)
上述两种方法返回:

TypeError:无法将项插入到尚未存在类别的CategoricalIndex中

有人能帮忙吗

# Unstack the dataframe and create columns for each months
flights_unstacked = flights_indexed.unstack()
上面的行将只创建一列432行。您正在尝试创建两列吗?此外,数据有3列,即年、月和乘客。年和乘客有int值,而月在字符串中有月的名称。取消堆叠将导致您在
航班中有几个月的时间\u取消堆叠
,因此您可能不得不放弃它。您真的需要取消数据集的堆栈吗?此外,如果你能发布你想要的结果,这将有助于更好地理解和回答你的问题


上面的行将只创建一列432行。您正在尝试创建两列吗?此外,数据有3列,即年、月和乘客。年和乘客有int值,而月在字符串中有月的名称。取消堆叠将导致您在
航班中有几个月的时间\u取消堆叠
,因此您可能不得不放弃它。您真的需要取消数据集的堆栈吗?此外,如果你能发布你想要的结果,更好地理解和回答你的问题将是有帮助的

问题源于你的月份栏的数据类型,即“类别”。您应该将其转换为“str”类型。那么您的代码应该可以正常工作:

import seaborn
df = seaborn.load_dataset('flights')
print(df.dtypes)
df['month'] = df['month'].astype(str)
df.set_index(['year', 'month'], inplace=True)
months = df.index.unique(1)
df_unstacked = df.unstack()
# order of months is lost when using unstack, hence reindex
df_unstacked = df_unstacked.reindex(months, axis=1, level=1)
df_unstacked['passengers', 'sum'] = df_unstacked.sum(1)

问题源于月份列的数据类型,即“类别”。您应该将其转换为“str”类型。那么您的代码应该可以正常工作:

import seaborn
df = seaborn.load_dataset('flights')
print(df.dtypes)
df['month'] = df['month'].astype(str)
df.set_index(['year', 'month'], inplace=True)
months = df.index.unique(1)
df_unstacked = df.unstack()
# order of months is lost when using unstack, hence reindex
df_unstacked = df_unstacked.reindex(months, axis=1, level=1)
df_unstacked['passengers', 'sum'] = df_unstacked.sum(1)

flights\u索引的
变量从未定义?你确定这是完整的密码吗?很抱歉。我错过了一行。。。我现在已经修改了原始代码。
flights\u索引的
变量从未定义?你确定这是完整的密码吗?很抱歉。我错过了一行。。。我现在已经修改了原代码。