【发布时间】:2018-12-06 19:56:06
【问题描述】:
我有三个数据框:df1、df2、df3。我正在尝试添加 ART_UNIT do df1 的列表。
df1 是 260846 行 x 4 列:
Index SYMBOL level not-allocatable additional-only
0 A 2 True False
1 A01 4 True False
2 A01B 5 True False
3 A01B1/00 7 False False
4 A01B1/02 8 False False
5 A01B1/022 9 False False
6 A01B1/024 9 False False
7 A01B1/026 9 False False
df2 是 941516 行 x 2 列:
Index CLASSIFICATION_SYMBOL_CD ART_UNIT
0 A44C27/00 3715
1 A44C27/001 2015
2 A44C27/001 3715
3 A44C27/001 2615
4 A44C27/005 2815
5 A44C27/006 3725
6 A44C27/007 3215
7 A44C27/008 3715
8 F41A33/00 3715
9 F41A33/02 3715
10 F41A33/04 3715
11 F41A33/06 3715
12 G07C13/00 3715
13 G07C13/005 3715
14 G07C13/02 3716
而df3与df2的格式相同,但有673023行x 2列
df2 和 df3 中的 'CLASSIFICATION_SYMBOL_CD' 不是唯一的。
对于 df2 和 df3 中的每个 'CLASSIFICATION_SYMBOL_CD',我想在 df1 'SYMBOL' 中找到相同的字符串,并向 df1 'ART_UNIT' 添加一个新列,其中包含来自 df2 和 df3 的所有 'ART_UNIT'。
例如,在 df2 中,'CLASSIFICATION_SYMBOL_CD'A44C27/001 有 ART_UNIT 2015、3715 和 2615。
我想将那些 ART_UNIT 写入 df1 中的正确行,这样读取:
Index SYMBOL level not-allocatable additional-only ART_UNIT
211 A44C27/001 2 True False [2015, 3715, 2615]
到目前为止,我已经尝试将 df2/df3 分组为 'CLASSIFICATION_SYMBOL_CD'
gp = df2.groupby(['CLASSIFICATION_SYMBOL_CD'])
for x in df2['CLASSIFICATION_SYMBOL_CD'].unique():
df2_g = gp.get_group(x)
这给了我:
Index CLASSIFICATION_SYMBOL_CD ART_UNIT
1354 A61N1/3714 3762
117752 A61N1/3714 3766
347573 A61N1/3714 3736
548026 A61N1/3714 3762
560771 A61N1/3714 3762
566120 A61N1/3714 3766
566178 A61N1/3714 3762
799486 A61N1/3714 3736
802408 A61N1/3714 3736
【问题讨论】:
标签: python-3.x pandas pandas-groupby