我有以下数据框: Original Dataframe 我想要以下输出: output Dataframe
我尝试在“容器”列(以及总和和其他列)上使用groupby,但它仅将第一行作为输出。
我对python和pandas非常陌生。不确定这样做是否正确。 一些较细微的问题的答案对于我来说太高级了。 我只是想知道我是否可以仅用2/3行编码获得输出。
答案 0 :(得分:0)
我相信您可以像下面这样groupby
和sum
。 dropna
会丢弃NaN
中的DataFrame
/空值。
df.dropna().groupby(['Container']).sum()
答案 1 :(得分:0)
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]
答案 2 :(得分:0)
将熊猫作为pd导入
df = pd.DataFrame({'id':['aaa','aaa','bbb','ccc','bbb','NaN','NaN','aaa','NaN' ], 'values':[1,2,3,4,5,6,7,8,9]})
df
对于范围(len(df))中的i:
if df.iloc[i,0] == "NaN":
df.iloc[i,0] = df.iloc[i-1,0]
df.groupby('id')。sum()
答案 3 :(得分:0)
与您在“输出数据框”中显示的结果完全相同:原始数据框“容器”列中的第一个“ NaN”值必须替换为相应的立即上限值。我添加了更多的“ NaN”值作为示例:
原始DataFrame:
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”值的“容器”列:
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