У меня есть 2 padas dataframe
df1 = pd.DataFrame({'id': [1001,1002,1004],
'col1': ["a","b","d"],
'col2': [1,2,6]})
df2 = pd.DataFrame({'id': [1001,1002,1003,1004,1005,1006,1007],
'a': [10,10,10,10,10,10,10],
'b': [2,2,2,2,2,2,2],
'c': [1,2,3,4,5,6,7],
'd': [5,5,5,5,5,4,5],
'e': [0,3,4,6,7,5,5]})
df1, а df2 имеет общий идентификатор.
всякий раз, когда значение появляется в df1.col1 (например, "a"), вычитайте значение df1.col2из соответствующего идентификатора df2 и столбца name = df1.col1 value ("a").
Вышеприведенное утверждение может сбивать с толку, но я попытаюсь объяснить на примере:
df1 id 1001 имеет col1 =a и col2 = 1
я хочу вычесть 1 из столбца a df2 для идентификатора 1001 = 10-1 = 9
в другом примере
df1 id = 1004 имеет значение col1 = d и col2 = 6, поэтому вычтите 6 из столбца d из df2, соответствующего id 1004 = 5-6 = -1. Окончательный результат будет выглядеть следующим образом
a b c d e id
0 9 2 1 5 0 1001
1 10 0 2 5 3 1002
2 10 2 3 5 4 1003
3 10 2 4 -1 6 1004
4 10 2 5 5 7 1005
5 10 2 6 4 5 1006
6 10 2 7 5 5 1007
Как следуетЯ решил эту проблему в Pandas эффективным способом, так как мне пришлось много раз повторять это упражнение для больших наборов данных.
Заранее спасибо