gpt4 book ai didi

python - 根据另一列中的值制作 DataFrame 中的值列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:19 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,如下所示。该框架中还有许多与任务无关的列。

id    pos      value       sente
1 a I 21
2 b have 21
3 b a 21
4 a cat 21
5 d ! 21
1 a My 22
2 a cat 22
3 b is 22
4 a cute 22
5 d . 22

我想从某些列中列出一个列表,所以第一句话 (sente=21) 和其他所有句子看起来都是这样。这意味着每个句子都有一个独特的条目。

`[('I', 'a', '1'), ..., ('!','d','5')]`

我已经有一个函数可以对一个句子执行此操作,但我不知道如何对框架中的所有句子(具有相同 sente 值的句子)执行此操作。

`class SentenceGetter(object):
def __init__(self, data):
self.n_sent = 1
self.data = data
self.empty = False
def get_next(self):
for t in self.data:
try:
s = self.data[(self.data["sente"] == 21)]
self.n_sent += 1
return
s["id"].values.tolist(),
s["pos"].values.tolist(),
s["value"].values.tolist()
except:
self.empty = True
return None,None,None

foo = SentenceGetter(df)
sent, pos, token = foo.get_next()
in = zip(token, pos, sent)

`

因为我的框架非常大,所以无法使用这样的结构:

df.loc[((df["sente"] == df["sente"].shift(-1)) & (df["sente"] == df["sente"]。 shift(+1))), ["pos","value","id"]]

有什么想法吗?

最佳答案

如果您愿意使用标准库,collections.defaultdict 提供了一个 O(n) 解决方案:

from collections import defaultdict

d = defaultdict(list)

for _, num, *data in df[['sente', 'value', 'pos', 'id']].itertuples():
d[num].append(data)

结果:

defaultdict(list,
{21: [('I', 'a', 1),
('have', 'b', 2),
('a', 'b', 3),
('cat', 'a', 4),
('!', 'd', 5)],
22: [('My', 'a', 1),
('cat', 'a', 2),
('is', 'b', 3),
('cute', 'a', 4),
('.', 'd', 5)]})

关于python - 根据另一列中的值制作 DataFrame 中的值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089580/

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