有两个数据帧,其中一个非常大,如下所示:
import pandas as pd
import numpy as np
import string, random
siz = int(1e10)
random.seed(1234)
a1 = pd.Series((random.choice(string.ascii_uppercase) for _ in range(siz)), name='CatA')
a2 = pd.Series((random.choice(string.ascii_lowercase) for _ in range(siz)), name='CatB')
val1 = pd.Series(pd.Series(np.random.randint(2, high=10, size=siz), name='Value'))
df_a = pd.DataFrame([a1, a2, val1]).T.set_index(['CatA', 'CatB'])
siz = 1000
random.seed(4321)
b1 = pd.Series((random.choice(string.ascii_uppercase) for _ in range(siz)), name='CatA')
b2 = pd.Series((random.choice(string.ascii_lowercase) for _ in range(siz)), name='CatB')
val2 = pd.Series(pd.Series(np.random.randint(2, high=10, size=siz), name='Value'))
df_b = pd.DataFrame([b1, b2, val2]).T.set_index(['CatA', 'CatB'])
Value
不变。
df_b
中删除df_a
。Value
中的df_a
应该保留。Value
中的df_b
已删除。尝试了df_a.sub(df_b.drop('Value', 1))
...。
有矢量化的方法吗?