gpt4 book ai didi

python - 合并具有相同列值的连续行

转载 作者:太空狗 更新时间:2023-10-29 22:15:55 24 4
gpt4 key购买 nike

我有一个看起来像这样的东西。我该怎么做:

    0             d
0 The DT
1 Skoll ORGANIZATION
2 Foundation ORGANIZATION
3 , ,
4 based VBN
5 in IN
6 Silicon LOCATION
7 Valley LOCATION

为此:

    0                       d
0 The DT
1 Skoll Foundation ORGANIZATION
3 , ,
4 based VBN
5 in IN
6 Silicon Valley LOCATION

最佳答案

@rfan 的回答当然有效,作为替代方案,这里有一种使用 pandas 的方法 groupby .

.groupby() 按“b”列对数据进行分组 - sort=False 是保持顺序完整所必需的。 .apply() 将一个函数应用到每组 b 数据,在本例中将字符串连接在一起并用空格分隔。

In [67]: df.groupby('b', sort=False)['a'].apply(' '.join)
Out[67]:

b
DT The
Org Skoll Foundation
, ,
VBN based
IN in
Location Silicon Valley
Name: a, dtype: object

编辑:

要处理更一般的情况(重复的非连续值)——一种方法是首先添加一个标记列来跟踪每行适用于哪一组连续数据,如下所示:

df['key'] = (df['b'] != df['b'].shift(1)).astype(int).cumsum()

然后将键添加到 groupby 中,即使有重复的值,它也应该可以工作。例如,对于这个带有重复的虚拟数据:

df = DataFrame({'a': ['The', 'Skoll', 'Foundation', ',', 
'based', 'in', 'Silicon', 'Valley', 'A', 'Foundation'],
'b': ['DT', 'Org', 'Org', ',', 'VBN', 'IN',
'Location', 'Location', 'Org', 'Org']})

应用分组:

In [897]: df.groupby(['key', 'b'])['a'].apply(' '.join)
Out[897]:
key b
1 DT The
2 Org Skoll Foundation
3 , ,
4 VBN based
5 IN in
6 Location Silicon Valley
7 Org A Foundation
Name: a, dtype: object

关于python - 合并具有相同列值的连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25147091/

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