gpt4 book ai didi

python - 合并字符串列上的两个数据框 - 复合字符串列

转载 作者:行者123 更新时间:2023-11-28 19:00:14 25 4
gpt4 key购买 nike

我正在尝试合并两个具有以下结构的巨大数据框(每个数据框超过 4 百万):

数据框 A:

     date    Fruit        a    b    c    d
01 "apple" 0 3 5 1
03 "apple" 8 2 7 2
02 "banana" 1 4 3 5
04 "banana" 3 5 2 6
03 "pineapple" 2 6 4 6
05 "pineapple" 3 5 7 9

数据框 B:

     date   Fruits                         x    y    z 
01 "apple, pear, strawberry" a n q
02 "banana, apple, coconut" b m p
03 "pineapple, pear, banana" c s o
04 "banana, apple, coconut" d f v
05 "pineapple, pear, banana" r ñ t

我想要实现的是具有以下结构的第三个数据框:

数据框 C:

     date   Fruit        a    b    c    d    x    y    z
01 "apple" 0 3 5 1 a n q
03 "apple" 0 3 5 1 0 0 0
02 "banana" 1 4 3 5 b m p
04 "banana" 1 4 3 5 d f v
03 "pineapple" 2 6 4 6 c s o
05 "pineapple" 2 6 4 6 r ñ t
...

我已经尝试过类似的东西:

test = market_test.assetCode.apply(lambda x : news_test.assetCodes.str.find(x)>=0)

但是我的内核坏了,我也曾尝试使用 for 循环将 B 数据框的水果列扩展到“水果-b”列,保留来自其他 B 的数据 列,然后在日期列和“fruit-B”列之间进行合并,但执行时间太长。

有没有一种使用数据帧AB获取数据帧C的方法,不会消耗大量时间和内存?

FruitFruits 列类型是字符串。

最佳答案

使用:

print (df_A)

date Fruit a b c d
0 1 apple 0 3 5 1
1 3 apple 8 2 7 2
2 2 banana 1 4 3 5
3 4 banana 3 5 2 6
4 3 pineapple 2 6 4 6
5 5 pineapple 3 5 7 9

print (df_B)

date Fruits x y z
0 1 apple, pear, strawberry a n q
1 2 banana, apple, coconut b m p
2 3 pineapple, pear, banana c s o
3 4 banana, apple, coconut d f v
4 5 pineapple, pear, banana r ñ t

import pandas as pd
import numpy as np

# Split the strings into list.
df_B.Fruits = df_B.Fruits.str.split(', ')

# reindex and repeat on length of list
temp = df_B.reindex(df_B.index.repeat(df_B.Fruits.str.len())).drop('Fruits',1)

temp['Fruit'] = np.concatenate(df_B.Fruits.values)

df_C = df_A.merge(temp, on=['date','Fruit'], how='left').fillna(0)

print (df_C)

date Fruit a b c d x y z
0 1 apple 0 3 5 1 a n q
1 3 apple 8 2 7 2 0 0 0
2 2 banana 1 4 3 5 b m p
3 4 banana 3 5 2 6 d f v
4 3 pineapple 2 6 4 6 c s o
5 5 pineapple 3 5 7 9 r ñ t

关于python - 合并字符串列上的两个数据框 - 复合字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53438964/

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