gpt4 book ai didi

python - Pandas 组 : Include all rows even the ones with empty column values

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:58 24 4
gpt4 key购买 nike

我正在使用 Pandas 并尝试测试一些东西以完全理解某些功能。

在使用以下代码从 csv 加载所有内容后,我正在对数据进行分组和聚合:

s = df.groupby(['ID','Site']).agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum'})
print(s)

它适用于以下文件:

enter image description here

但它不适用于此文件:

enter image description here

对于第二个文件,我只获取 56311 ID 的数据。原因是某些列具有空值。但这应该无关紧要。我还没有发现任何相关的东西。我只找到了如何排除空列。

除此问题外,在分组前我应该考虑的主要事项是什么?是否有可能因为某种格式(日期或数字)而排除行?

最佳答案

如果 by 参数中的列中的 NaN 存在问题,那么组将被删除。

因此需要将 NaN 替换为不在 Site 列中的某个值,然后在 groupby 替换回 NaNs 之后:

感谢 Zerogroupby 中使用 fillna 简化解决方案:

df1= (df.groupby([df['ID'],df['Site'].fillna('tmp')])
.agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum'})
.reset_index()
.replace({'Site':{'tmp': np.nan}}))

如果 MultiIndex 中需要 NaN:

s = (df.groupby([df['ID'],df['Site'].fillna('tmp')])
.agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum'})
.rename(index={'tmp':np.nan}))

示例:

df = pd.DataFrame({'A':list('abcdef'),
'Site':[np.nan,'a',np.nan,'b','b','a'],
'Start Date':pd.date_range('2017-01-01', periods=6),
'End Date':pd.date_range('2017-11-11', periods=6),
'Value':[7,3,6,9,2,1],
'ID':list('aaabbb')})

print (df)
A End Date ID Site Start Date Value
0 a 2017-11-11 a NaN 2017-01-01 7
1 b 2017-11-12 a a 2017-01-02 3
2 c 2017-11-13 a NaN 2017-01-03 6
3 d 2017-11-14 b b 2017-01-04 9
4 e 2017-11-15 b b 2017-01-05 2
5 f 2017-11-16 b a 2017-01-06 1

df1= (df.groupby([df['ID'],df['Site'].fillna('tmp')])
.agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum'})
.reset_index()
.replace({'Site':{'tmp': np.nan}}))

print (df1)
ID Site End Date Start Date Value
0 a a 2017-11-12 2017-01-02 3
1 a NaN 2017-11-13 2017-01-01 13
2 b a 2017-11-16 2017-01-06 1
3 b b 2017-11-15 2017-01-04 11

s = (df.groupby([df['ID'],df['Site'].fillna('tmp')])
.agg({'Start Date': 'min', 'End Date': 'max', 'Value': 'sum'})
.rename(index={'tmp':np.nan}))

print (s)
End Date Start Date Value
ID Site
a a 2017-11-12 2017-01-02 3
NaN 2017-11-13 2017-01-01 13
b a 2017-11-16 2017-01-06 1
b 2017-11-15 2017-01-04 11

关于python - Pandas 组 : Include all rows even the ones with empty column values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com