gpt4 book ai didi

python - Pandas - 根据两个单元格的相似内容合并行

转载 作者:行者123 更新时间:2023-12-01 00:49:23 26 4
gpt4 key购买 nike

我有一个类似于以下内容的 pandas 数据框。我正在尝试合并包含相同 ID 和 CountryCode 值对的所有行。

records = [ (1, 'IN', 'yes' , '', '' , '', '') ,
(1, 'MY', '' , 'yes', '' , '', '' ) ,
(1, 'MY', '' , '', 'yes', '', '' ) ,
(1, 'MY', '' , '' , '' , 'yes', '') ,
(1, 'US', '' , '', '' , '', 'yes') ,
(2, 'MY', 'yes' , '', '' , '', ''),
(2, 'UK', '' , 'yes', '' , '', '')]

dfRecords = pd.DataFrame(records, columns = ['ID' , 'CountryCode', 'Address' , 'MobileNo', 'HomeNo', 'OfficeNo', 'TacNo'])

输出:

ID  CountryCode Address MobileNo    HomeNo  OfficeNo    TacNo
1 IN yes
1 MY yes
1 MY yes
1 MY yes
1 US yes
2 MY yes
2 UK yes

这就是我需要的

ID  CountryCode Address MobileNo    HomeNo  OfficeNo    TacNo
1 IN yes
1 MY yes yes yes
1 US yes
2 MY yes
2 UK yes

我有一个想法,我必须根据 ID 和 CountryCode 列使用 groupby(),但我无法将行合并在一起。

groupings = dfRecords.groupby(['ID','CountryCode'])
groupings.groups

输出:

{(1, 'IN'): Int64Index([0], dtype='int64'),
(1, 'MY'): Int64Index([1, 2, 3], dtype='int64'),
(1, 'US'): Int64Index([4], dtype='int64'),
(2, 'MY'): Int64Index([5], dtype='int64'),
(2, 'UK'): Int64Index([6], dtype='int64')}

最佳答案

最大

因为'yes'大于''

dfRecords.groupby(['ID', 'CountryCode'], as_index=False).max()

ID CountryCode Address MobileNo HomeNo OfficeNo TacNo
0 1 IN yes
1 1 MY yes yes yes
2 1 US yes
3 2 MY yes
4 2 UK yes
<小时/>

首先

不依赖max

g = dfRecords.mask(dfRecords == '').groupby(['ID', 'CountryCode'], as_index=False)
g.first().fillna('')

ID CountryCode Address MobileNo HomeNo OfficeNo TacNo
0 1 IN yes
1 1 MY yes yes yes
2 1 US yes
3 2 MY yes
4 2 UK yes

关于python - Pandas - 根据两个单元格的相似内容合并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691159/

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