gpt4 book ai didi

python - pandas 系列及其所有元素的排列 (itertools)

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

我试图返回一系列(或数据框)以及该列表中元素的排列:

stmt_stream_ticker = ("SELECT * FROM ticker;")
ticker = pd.read_sql(stmt_stream_ticker, eng)

这给了我我的股票系列

    ticker
0 ALJ
1 ALDW
2 BP
3 BPT

然后通过函数我想处理我的列表:

def permus_maker(x):

global i # I tried nonlocal i but this gives me: nonbinding error
permus = itertools.permutations(x, 2)
permus_pairs = []

for i in permus:
permus_pairs.append(i)

return permus_pairs.append(i)

test = permus_maker(ticker)

print(test)

这给了我“无”回复。知道我做错了什么吗?

编辑1:

我测试了用户定义函数与集成函数 (%timeit):需要 5 倍的时间。

最佳答案

list.append() 返回 None,因此返回 permus_pairs 而不是 permus_pairs.append(i)

演示:

In [126]: [0].append(1) is None
Out[126]: True

但你并不真正需要该功能:

In [124]: list(permutations(ticker.ticker, 2))
Out[124]:
[('ALJ', 'ALDW'),
('ALJ', 'BP'),
('ALJ', 'BPT'),
('ALDW', 'ALJ'),
('ALDW', 'BP'),
('ALDW', 'BPT'),
('BP', 'ALJ'),
('BP', 'ALDW'),
('BP', 'BPT'),
('BPT', 'ALJ'),
('BPT', 'ALDW'),
('BPT', 'BP')]

请注意 - 如果您正在处理巨大的列表/系列/数据帧,那么使用排列迭代器迭代而不是在内存中爆炸是有意义的:

for pair in permutations(ticker.ticker, 2):
# process pair of tickers here ...

关于python - pandas 系列及其所有元素的排列 (itertools),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49592813/

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