在Python中创建df1['Description']
字符串等于df1['a']
字符串时获得的新数据框列df2['b']
的最有效方法是什么?当满足条件时,会将单独的字符串df2['Description']
分配给df1['Description']
。 df1
和df2
是大小不等的大数据帧(〜1/2百万行)。
df1
:
a b
Z0 1
Z1 2
A7 3
df2
:
b Description
W2 asadsde
Z0 evrverve
A7 eveveerv
我想要:
df1
a b Description
Z0 1 evrverve
Z1 2 jsbdbcje
A7 3. eveveerv
答案 0 :(得分:1)
考虑以下是您的数据框:
df1
a b
Z0 1
Z1 2
A7 3
df2
b Description
W2 asadsde
Z0 evrverve
A7 eveveerv
Z1 jsbdbcje
df1.assign(description = df1['a'].map(dict(df2.values)))
a b description
0 Z0 1 evrverve
1 Z1 2 jsbdbcje
2 A7 3 eveveerv
在df1中,如果您只想匹配的行,则使用dropna
:
df1.dropna(inplace=True)
答案 1 :(得分:1)
df1 = pd.DataFrame([['Z0', 1],['Z1', 2], ['A7', 3]], columns=['a', 'b'])
a b
0 Z0 1
1 Z1 2
2 A7 3
df2 = pd.DataFrame([['W2', 'asadsde'], ['Z0', 'evrverve'], ['A7', 'eveveerv'], ['Z1', 'jsbdbcje']], columns=['a', 'Description'])
a Description
0 W2 asadsde
1 Z0 evrverve
2 A7 eveveerv
3 Z1 jsbdbcje
df3 = pd.merge(left=df1, right=df2, on='a', )
a b Description
0 Z0 1 evrverve
1 Z1 2 jsbdbcje
2 A7 3 eveveerv
答案 2 :(得分:0)
import pandas as pd
df1 = pd.DataFrame([['Z0', 1],['Z1', 2], ['A7', 3]], columns=['a', 'b'])
df2 = pd.DataFrame([['W2', 'asadsde'], ['Z0', 'evrverve'], ['A7', 'eveveerv'], ['Z1', 'jsbdbcje']], columns=['b', 'Description'])
初始化之后,您可以根据a
列加入数据框,并将其他datafrmae的b
列设置为index。因此,代码将是-
df1.join(df2.set_index('b'),on='a')
您的愿望输出将是-
a b description
0 Z0 1 evrverve
1 Z1 2 jsbdbcje
2 A7 3 eveveerv