Как скопировать значения из другого кадра данных в зависимости от условия (те же значения, что и в столбце Speci c)? - PullRequest
2 голосов
/ 09 января 2020

У меня есть два кадра данных (df1 и df2), и они выглядят так:

data1 = {'col1':[1,2,3,4,1,2,3,4,1,2,3,4], 'col2':np.arange(1,13)*2}

df1 = pd.DataFrame(data1)

data2 = {'x': [1,2,3,4], 'y': [10,20,40,5]}

df2 = pd.DataFrame(data2)

Я хотел бы добавить новый столбец 'col3' к df1 со значениями df2 ['y'] когда df1 ['col1'] равен df2 ['x']. Так что мой df1 останется таким:

col1    col2    col3
1      2      10
2      4      20
3      6      40
4      8      5
1      10     10
2      12     20
3      14     40
4      16     5
1      18     10
2      20     20
3      22     40
4      24     5

Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Используйте map со словарем, созданным из df2

df1['col3'] = df1.col1.map(dict(df2[['x', 'y']].values))

или

df1['col3'] = df1.col1.map(dict(zip(df2.x, df2.y)))

Out[886]:
    col1  col2  col3
0      1     2    10
1      2     4    20
2      3     6    40
3      4     8     5
4      1    10    10
5      2    12    20
6      3    14    40
7      4    16     5
8      1    18    10
9      2    20    20
10     3    22    40
11     4    24     5
1 голос
/ 09 января 2020

Используйте merge:

df1.merge(df2, how='left', left_on='col1', right_on='x') \
    [['col1', 'col2', 'y']] \
    .rename(columns={'y': 'col3'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...