我有两个不同行数和列数的电子表格。
我想做的是将两者进行比较,并从a1.xlsx中提取与a2.xlsx的列名匹配的A和B的值,然后将这些值复制到a2.xlsx中的C和D列。我知道如何在excel中使用Index-Match来做到这一点,但不是使用Python的Pandas。
电子表格1 (a1.xlsx)
Index A B C
0 s 0.2 new york
1 d 1 vienna
2 g 2 london
3 c 3 tokyo
4 r 2 paris
5 d 1 berlin
6 a 8 madrid
7 f 10 seattle电子表格2 (a2.xlsx)
Index A B C D
0 dublin 34 x x
1 seoul 36 x x
2 london 12 x x
3 berlin 4 x x
4 tokyo 6 x x
5 seatte 22 x x发布于 2015-04-10 14:01:31
假设将spreadsheet1加载到pandas df,并将电子表格2加载到df1,那么您可以从merge的结果中赋值
In [20]:
df1[['C','D']] = df1.merge(df, left_on='A', right_on='C',how='left')[['A_y','B_y']]
df1
Out[20]:
A B C D
Index
0 dublin 34 NaN NaN
1 seoul 36 NaN NaN
2 london 12 g 2
3 berlin 4 d 1
4 tokyo 6 c 3
5 seattle 22 f 10只是为了解释一下当我们合并时,我们执行左合并,这将产生列的冲突,因为我们有冲突的列名:
In [24]:
df1.merge(df, left_on='A', right_on='C',how='left')
Out[24]:
A_x B_x C_x D A_y B_y C_y
0 dublin 34 x x NaN NaN NaN
1 seoul 36 x x NaN NaN NaN
2 london 12 x x g 2 london
3 berlin 4 x x d 1 berlin
4 tokyo 6 x x c 3 tokyo
5 seattle 22 x x f 10 seattle我们只对列A_y和B_y感兴趣,我们执行左合并,因为如果我们做的默认合并类型是“内部”,那么这将不会与原始df对齐,也就是说,值将被移到df的顶部。
https://stackoverflow.com/questions/29550409
复制相似问题