2024-09-29 02:25:07 发布
网友
我有以下数据帧: Original Dataframe 我想要以下输出: output Dataframe
我曾尝试在“Container”列(以及sum和其他列)上使用groupby,但它只给出第一行作为输出
我对Python和熊猫很陌生。不确定我做的是否正确。 一些更苗条的问题的答案太超前了,我无法理解。 我只是想知道,如果我能得到的输出只有2/3行的编码
预期结果与您显示为“Output Dataframe”的结果完全相同:原始Dataframe的“Container”列中的第一个“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
按照[https://stackoverflow.com/a/27905350/6057650][1]的建议,将“fillna”函数与方法“ffill”一起使用
然后您将得到不带“NaN”值的“Container”列:
df=df.fillna(method='ffill') df Container SB No Pkgs CBM Weight 257 CXRU1219452 195375 1650 65 23000 259 BEAU4883430 140801 26 3 575 260 BEAU4883430 140868 60 8 1153 261 BEAU4883430 140824 11 1 197 262 BEAU4883430 140851 253 32 4793 263 BEAU4883430 140645 14 1 278 264 BEAU4883430 140723 5 0 71 265 BEAU4883430 140741 1 0 22 266 BEAU4883430 140768 5 0 93 268 SZLU9366565 189355 1800 65 23000 259 ZBCD1234567 100000 100 10 1000 260 ZBCD1234567 100000 100 10 1000 261 ZBCD1234567 100000 100 10 1000 262 ZBCD1234567 100000 100 10 1000
现在可以使用groupby获得预期的“Output DataFrame”:
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
import pandas as pd d = [['CXRU',195, 1650,65,23000], ['BEAU',140, 26, 3, 575], ['NaN', 140, 60 , 8, 1153]] df=pd.DataFrame(mylist,columns=['Container','SB No', 'Pkgs', 'CBM','Weight']) df
sel= df['Container']!='NaN' df[sel]
我相信你可以groupby和sum像下面这样。dropna将在DataFrame中删除NaN/空值
groupby
sum
dropna
DataFrame
NaN
df.dropna().groupby(['Container']).sum()
预期结果与您显示为“Output Dataframe”的结果完全相同:原始Dataframe的“Container”列中的第一个“NaN”值必须替换为相应的立即上限值。我添加了更多“NaN”值来举例说明:
原始数据帧:
按照[https://stackoverflow.com/a/27905350/6057650][1]的建议,将“fillna”函数与方法“ffill”一起使用
然后您将得到不带“NaN”值的“Container”列:
现在可以使用groupby获得预期的“Output DataFrame”:
我相信你可以
groupby
和sum
像下面这样。dropna
将在DataFrame
中删除NaN
/空值相关问题 更多 >
编程相关推荐