python pandas - установить значение столбца столбца на основе индекса и / или идентификатора объединенных кадров данных - PullRequest
0 голосов
/ 29 мая 2019

У меня есть объединенный фрейм данных, по крайней мере, из двух объединенных фреймов данных:

i.e. 
df1
  Name | Type | ID
0 Joe     A     1
1 Fred    B     2
2 Mike   Both   3
3 Frank  Both   4

df2
  Name | Type | ID
0 Bill   Both    1
1 Jill   Both    2
2 Mill   B       3
3 Hill   A       4

ConcatDf:
  Name | Type | ID
0 Joe     A     1
1 Fred    B     2
2 Mike   Both   3
3 Frank  Both   4
0 Bill   Both   1
1 Jill   Both   2
2 Mill   B      3
3 Hill   A      4

Предположим, после они объединены, я хотел бы установить Type для всех записей от df1 до C и всех записей от df2 до B. Это возможно?

Индексы информационных фреймов могут быть очень разных размеров.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Используйте merge с indicator=True, чтобы найти строки, принадлежащие df1 или df2.Затем используйте np.where, чтобы назначить A или B.

t = concatdf.merge(df1, how='left', on=concatdf.columns.tolist(), indicator=True)
concatdf['Type'] = np.where(t._merge.eq('left_only'), 'B', 'C')


Out[2185]:
    Name Type  ID
0    Joe    C   1
1   Fred    C   2
2   Mike    C   3
3  Frank    C   4
0   Bill    B   1
1   Jill    B   2
2   Mill    B   3
3   Hill    B   4
0 голосов
/ 29 мая 2019
df3 = pd.concat([df1,df2], keys = (1,2))

df3.loc[(1), 'Type'] == 'C'

Когда вы согласны, вы можете назначить ключи df. Это создаст мультииндекс с ключами, разделяющими конкатонированные df. Затем, когда вы используете .loc с клавишами, вы можете использовать ( вокруг клавиши для вызова группы. В приведенном выше коде мы изменили бы все типы df1 (который имеет ключ 1) на C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...