我有一个这样的df。
Date 2022-10-22 2022-10-21 2022-10-20
我想为列表['NAB', 'CBA']中的每个元素组合和复制为了得到这样的结果df。
['NAB', 'CBA']
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
提前谢谢。
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
7vhp5slm2#
您可以使用十字merge:
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
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
taor4pac4#
var1= ['NAB','CBA'] df1.assign(col1=var1.__str__())\ .assign(col1=lambda x:x.col1.map(eval))\ .explode('col1')
小时
4条答案
按热度按时间kyxcudwk1#
将固定银行=[“NAB”,“CBA”]列添加到df:
然后分解日期列:
7vhp5slm2#
您可以使用十字
merge
:输出:
7ivaypg93#
另一种可能的解决方案:
输出:
taor4pac4#
小时