Pandas通过复制每个列表元素的记录将df与列表结合起来

6l7fqoea  于 2022-10-23  发布在  其他
关注(0)|答案(4)|浏览(121)

我有一个这样的df。

Date
2022-10-22
2022-10-21
2022-10-20

我想为列表['NAB', 'CBA']中的每个元素组合和复制
为了得到这样的结果df。

Date        Bank
2022-10-22  NAB
2022-10-22  CBA
2022-10-21  NAB
2022-10-21  CBA
2022-10-20  NAB
2022-10-20  CBA

提前谢谢。

kyxcudwk

kyxcudwk1#

将固定银行=[“NAB”,“CBA”]列添加到df:

df["Bank"] = df.apply(lambda _: ["NAB", "CBA"], axis=1)

[Out]:
        date        Bank
0 2022-10-22  [NAB, CBA]
1 2022-10-21  [NAB, CBA]
2 2022-10-20  [NAB, CBA]

然后分解日期列:

df = df.explode("Bank")

[Out]:
        date Bank
0 2022-10-22  NAB
0 2022-10-22  CBA
1 2022-10-21  NAB
1 2022-10-21  CBA
2 2022-10-20  NAB
2 2022-10-20  CBA
7vhp5slm

7vhp5slm2#

您可以使用十字merge

lst = ['NAB', 'CBA']
out = df.merge(pd.Series(lst, name='Bank'), how='cross')

输出:

Date Bank
0  2022-10-22  NAB
1  2022-10-22  CBA
2  2022-10-21  NAB
3  2022-10-21  CBA
4  2022-10-20  NAB
5  2022-10-20  CBA
7ivaypg9

7ivaypg93#

另一种可能的解决方案:

lst = [['NAB', 'CBA']]

df['Bank'] = lst * len(df)
df.explode('Bank')

输出:

Date Bank
0  2022-10-22  NAB
0  2022-10-22  CBA
1  2022-10-21  NAB
1  2022-10-21  CBA
2  2022-10-20  NAB
2  2022-10-20  CBA
taor4pac

taor4pac4#

var1= ['NAB','CBA']
df1.assign(col1=var1.__str__())\
    .assign(col1=lambda x:x.col1.map(eval))\
    .explode('col1')


小时

相关问题