我正在尝试使用非唯一索引将信息从 df 映射到 df1。不确定这是否可以通过多索引处理?感谢您的帮助。
我有这个数据框 (df),我想从中映射信息:
将熊猫导入为 pd
df = pd.DataFrame({'Col_1':['c', 'a', 'c', 'b', 'a', 'a', 'b', 'c', 'a', 'c'],
'Col_2':['spam', 'spam', 'spam', 'spam', 'spam', 'egg', 'egg', 'egg', 'egg', 'egg'],
'Col_3':[2, 1, 4, 1, 3, 5, 4, 6, 7, 7]}
)
In [2]: df
Out[2]:
Col_1 Col_2 Col_3
0 c spam 2
1 a spam 1
2 c spam 4
3 b spam 1
4 a spam 3
5 a egg 5
6 b egg 4
7 c egg 6
8 a egg 7
9 c egg 7
然后是我想要将信息映射到的第二个数据帧 (df1):
df1 = pd.DataFrame({'Col_1':['doe', 'fay', 'jane', 'jon', 'tom'],
'Col_2':['c', 'a', 'b', 'a', 'c'],
'spam':['L', 'L', 'L', 'L', 'L'],
'egg':['Z', 'Z', 'Z', 'Z', 'Z']}
Col_1 Col_2 spam egg
0 doe c L Z
1 fay a L Z
2 jane b L Z
3 jon a L Z
4 tom c L Z
我试图将 df 映射到 df1:
d=df.set_index('Col_1')['Col_3']
p='({})'.format('\\b|\\b'.join(df['Col_1']))
df1['Col_3']=df1['Col_1'].str.extract(p,expand=False).map(d)
但我收到错误消息:“重新索引仅对唯一值的索引对象有效。”我不知道如何重新索引才能达到我想要的结果。
我尝试向 df 和 df1 添加另一列名为“Unique”的列,但遇到另一个错误:“‘DataFrame’对象没有属性‘str’”
d=df.set_index(['Unique', 'Group'])['Date']
p='({})'.format('\\b|\\b'.join(df[['Group', 'Class']]))
df1['Date']=df1[['Group', 'Unique']].str.extract(p,expand=False).map(d)
如何实现以下数据框(df1_modified)?
df1_modified
Col_1 Col_2 spam spam_1 egg egg_1
0 doe c L 2 Z 3
1 fay a L 1 Z 3
2 jane b L 1 Z 2
3 jon a L 1 Z 3
4 tom c L 2 Z 3
5 jer b L 1 Z 2
感谢您的帮助。