Python 如何在groupby列中使用具有nan值的groupby
我有以下数据帧: 我想要以下输出: 我曾尝试在“Container”列(以及sum和其他列)上使用groupby,但它只将第一行作为输出 我对蟒蛇和熊猫很陌生。不确定我做的是否正确。 一些更为模糊的问题的答案过于超前,我无法理解。Python 如何在groupby列中使用具有nan值的groupby,python,pandas-groupby,Python,Pandas Groupby,我有以下数据帧: 我想要以下输出: 我曾尝试在“Container”列(以及sum和其他列)上使用groupby,但它只将第一行作为输出 我对蟒蛇和熊猫很陌生。不确定我做的是否正确。 一些更为模糊的问题的答案过于超前,我无法理解。 我只是想知道我是否可以只使用2/3行编码就获得输出。我相信您可以groupby和sum如下所示。dropna将在数据帧中删除NaN/空值 df.dropna().groupby(['Container']).sum() 我相信你可以像下面这样groupby和sum
我只是想知道我是否可以只使用2/3行编码就获得输出。我相信您可以
groupby
和sum
如下所示。dropna
将在数据帧中删除NaN
/空值
df.dropna().groupby(['Container']).sum()
我相信你可以像下面这样groupby
和sum
。dropna
将在数据帧中删除NaN
/空值
df.dropna().groupby(['Container']).sum()
将熊猫作为pd导入
df=pd.DataFrame({'id':['aaa','aaa','bbb','ccc','bbb','NaN','NaN','aaa','NaN'],
“值”:[1,2,3,4,5,6,7,8,9]})
df
对于范围内的i(len(df)):
df.groupby('id').sum()
df=pd.DataFrame({'id':['aaa','aaa','bbb','ccc','bbb','NaN','NaN','aaa','NaN'],
“值”:[1,2,3,4,5,6,7,8,9]})
df
对于范围内的i(len(df)):
df.groupby('id').sum()预期结果与显示为“输出数据帧”的结果完全相同:原始数据帧的“容器”列中的第一个“NaN”值必须替换为相应的直接上限值。我添加了更多“NaN”值以举例说明:
原始数据帧:
df
Container SB No Pkgs CBM Weight
257 CXRU1219452 195375 1650 65 23000
259 BEAU4883430 140801 26 3 575
260 NaN 140868 60 8 1153
261 NaN 140824 11 1 197
262 NaN 140851 253 32 4793
263 NaN 140645 14 1 278
264 NaN 140723 5 0 71
265 NaN 140741 1 0 22
266 NaN 140768 5 0 93
268 SZLU9366565 189355 1800 65 23000
259 ZBCD1234567 100000 100 10 1000
260 NaN 100000 100 10 1000
261 NaN 100000 100 10 1000
262 NaN 100000 100 10 1000
使用“fillna”函数和方法“ffill”,如[
然后您将得到不带“NaN”值的“Container”列:
现在,您可以使用groupby获得预期的“输出数据帧”:
df.groupby(['Container']).sum()
SB No Pkgs CBM Weight
Container
BEAU4883430 1126221 375 45 7182
CXRU1219452 195375 1650 65 23000
SZLU9366565 189355 1800 65 23000
ZBCD1234567 400000 400 40 4000
预期结果与显示为“输出数据帧”的结果完全相同:原始数据帧“容器”列中的第一个“NaN”值必须替换为相应的直接上限值。我添加了更多“NaN”值以举例说明:
原始数据帧:
df
Container SB No Pkgs CBM Weight
257 CXRU1219452 195375 1650 65 23000
259 BEAU4883430 140801 26 3 575
260 NaN 140868 60 8 1153
261 NaN 140824 11 1 197
262 NaN 140851 253 32 4793
263 NaN 140645 14 1 278
264 NaN 140723 5 0 71
265 NaN 140741 1 0 22
266 NaN 140768 5 0 93
268 SZLU9366565 189355 1800 65 23000
259 ZBCD1234567 100000 100 10 1000
260 NaN 100000 100 10 1000
261 NaN 100000 100 10 1000
262 NaN 100000 100 10 1000
使用“fillna”函数和方法“ffill”,如[
然后您将得到不带“NaN”值的“Container”列:
现在,您可以使用groupby获得预期的“输出数据帧”:
df.groupby(['Container']).sum()
SB No Pkgs CBM Weight
Container
BEAU4883430 1126221 375 45 7182
CXRU1219452 195375 1650 65 23000
SZLU9366565 189355 1800 65 23000
ZBCD1234567 400000 400 40 4000
你可以发布你的代码来尝试它和结果吗?你可以发布你的代码来尝试它和结果吗?我不知道写答案。因为,今天是我第一天堆叠溢出。(我也不会英语。)我不知道写答案。因为,今天是我第一天堆叠溢出。(我也不会英语。)
df.groupby(['Container']).sum()
SB No Pkgs CBM Weight
Container
BEAU4883430 1126221 375 45 7182
CXRU1219452 195375 1650 65 23000
SZLU9366565 189355 1800 65 23000
ZBCD1234567 400000 400 40 4000