Получить процентное отклонение чисел от двух кадров данных на основе расположения столбцов - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть два кадра данных:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data":(2,4,6)})

Я хочу получить числа отклонений в процентах для столбцов.

Я пробовал следующий код:

data1_i=df1.set_index(["Product"])

data2_i=df2.set_index(["Product"])

data_diff=(data2_i-data1_i)/data1_i*100
data_diff.reset_index(inplace=True)

Вывод получен:

    Product Data
0   A   100.0
1   B   100.0
2   C   100.0

Я могу сделать это, поскольку имя столбца совпадает.Как получить вариант, если у меня разные имена столбцов, как показано ниже:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data_new":(2,4,6)})

Я не смогу использовать функции переименования, так как у меня много столбцов.Я хочу получить вариацию чисел, основанную на позиционировании столбца .Любые указатели, чтобы я мог начать

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете выбрать столбцы по позиции с помощью iloc:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data_new":(2,4,6)})
data1_i=df1.set_index(["Product"])
data2_i=df2.set_index(["Product"])

data_diff=(data2_i.iloc[:, 0]-data1_i.iloc[:, 0])/data1_i.iloc[:, 0]*100
data_diff = data_diff.reset_index(name='Data')
print (data_diff)
  Product   Data
0       A  100.0
1       B  100.0
2       C  100.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...