gpt4 book ai didi

python - 将新行追加到 Pandas groupby 结果对象

转载 作者:行者123 更新时间:2023-12-03 07:57:51 24 4
gpt4 key购买 nike

我是 python 新手,我正在尝试按结果对象将记录插入到组中。

我有以下数据框,其中 ID 1 和 2 具有 SECTION_GROUP,因为 GROUP 1、3 和 4 具有 GROUP 2,但 5 没有任何 SECTION_GROUP。

<表类=“s-表”><标题>IDENTITY_NAMEENTITY_NAMESECTION_GROUPDOC_ID <正文>1dNumberU220059090组 1402tDate22 年 12 月 6 日组 1403dNumberU220059090组 2404tDate22 年 12 月 6 日组 2405s公司bpnan40

我正在尝试将如下结果分为两个单独的组。

<表类=“s-表”><标题>IDENTITY_NAMEENTITY_NAMESECTION_GROUPDOC_ID <正文>1dNumberU220059090组 1402tDate22 年 12 月 6 日组 1405s公司bpnan40
<表类=“s-表”><标题>IDENTITY_NAMEENTITY_NAMESECTION_GROUPDOC_ID <正文>3dNumberU220059090组 2404tDate22 年 12 月 6 日组 2405s公司bpnan40

我在下面尝试过,但我只得到了第 2 组的结果。我需要在循环之外访问这两个组的结果。非常感谢任何帮助。

import pandas as pd

df = pd.read_csv ('sample.csv',encoding= 'unicode_escape',usecols= ['ID','ENTITY_NAME','ENTITY_VALUE','SECTION_GROUP','DOC_ID'])
distDocIds = df["DOC_ID"].unique()


for docId in distDocIds:
result = df[df.DOC_ID==docId] # all data for specific Id
grpResult = df[df.DOC_ID==docId].groupby('SECTION_GROUP') # groupby SECTION_GROUP data

for group in grpResult:
#check in any record present without SECTION_GROUP
#if present append group with that record
foundUnion = result[pd.isnull(result.SECTION_GROUP)]
if len(foundUnion) > 0:
foundUnion = foundUnion.append(group[1])
**#IF I print foundUnion here I am getting proper result as epxected but I want this access foundUnion outside of loop.

newdf = foundUnion.copy()
print(newdf)

最佳答案

如果空单元格是空字符串'',你可以这样做:

mask = df['SECTION_GROUP'].eq('')
rest = df[mask]

for _, g in df[~mask].groupby('SECTION_GROUP'):
g = pd.concat([g, rest])
print(g)

打印:

   ID ENTITY_NAME ENTITY_NAME.1 SECTION_GROUP  DOC_ID
0 1 dNumber U220059090 GROUP 1 40
1 2 tDate 6-Dec-22 GROUP 1 40
4 5 sCompany bp 40

ID ENTITY_NAME ENTITY_NAME.1 SECTION_GROUP DOC_ID
2 3 dNumber U220059090 GROUP 2 40
3 4 tDate 6-Dec-22 GROUP 2 40
4 5 sCompany bp 40

如果空值为NaN:

mask = df['SECTION_GROUP'].isna()
rest = df[mask]

for _, g in df[~mask].groupby('SECTION_GROUP'):
g = pd.concat([g, rest])
print(g)

打印:

   ID ENTITY_NAME ENTITY_NAME.1 SECTION_GROUP  DOC_ID
0 1 dNumber U220059090 GROUP 1 40
1 2 tDate 6-Dec-22 GROUP 1 40
4 5 sCompany bp NaN 40

ID ENTITY_NAME ENTITY_NAME.1 SECTION_GROUP DOC_ID
2 3 dNumber U220059090 GROUP 2 40
3 4 tDate 6-Dec-22 GROUP 2 40
4 5 sCompany bp NaN 40

关于python - 将新行追加到 Pandas groupby 结果对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75597668/

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