gpt4 book ai didi

python - pandas 循环列的值

转载 作者:行者123 更新时间:2023-12-01 03:31:08 24 4
gpt4 key购买 nike

我有一个 pandas DataFrame,我想使用的一列值是列表。我想将每个列表的两个元素一一组合,然后输出到另一个 DataFrame 中。
例如,我有数据帧 df,其中包含 col_acol_bcol_b 的值是列表。我想循环 df.col_b 的值,输出配对列表。

import pandas as pd

df=pd.DataFrame({'col_a':['ast1','ast2','ast3'],'col_b':[['text1','text2','text3'],['mext1','mext2','mext3'],['cext1','cext2']]})
df

col_a col_b
0 ast1 [text1, text2, text3]
1 ast2 [mext1, mext2, mext3]
2 ast3 [cext1, cext2]

我想要这个:

    col_a   col_b_1
0 ast1 [text1, text2]
1 ast1 [text1, text3]
2 ast1 [text2, text3]
3 ast2 [mext1, mext2]
4 ast2 [mext1, mext3]
5 ast2 [mext2, mext3]
6 ast3 [cext1, cext2]

最佳答案

假设您的 col_a 每行都有唯一的值,您可以使用 itertools 中的combinations 来生成列表元素的所有两个组合:

from itertools import combinations
(df.groupby('col_a')['col_b']
.apply(lambda x: pd.Series(list(combinations(x.iloc[0], 2))))
.reset_index(level = 0))

# col_a col_b
#0 ast1 (text1, text2)
#1 ast1 (text1, text3)
#2 ast1 (text2, text3)
#0 ast2 (mext1, mext2)
#1 ast2 (mext1, mext3)
#2 ast2 (mext2, mext3)
#0 ast3 (cext1, cext2)

关于python - pandas 循环列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40924021/

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