Используя pandas, как взвесить некоторый параметр (столбцы) для получения результата на основе взвешивания - PullRequest
2 голосов
/ 18 января 2020

В моем наборе данных все параметры имеют качественные переменные,

Когда, Все мои параметры (столбцы) отличаются для одной строки, тогда мы даем нам вес для этих переменных,

для колонного орошения мы даем нам 40% веса,
для почвы мы даем нам 35% веса и
для сорта семян мы даем нам 25% веса,

  • , поэтому, когда все параметры дают различное значение, тогда будет выбран выход для значения Irrigated column на основе введенного нами веса (40%).

  • если повторяется более 2 раз, вывод будет отображаться как значение, повторенное 2 раза.

enter image description here Любое предложение, это поможет.

>>> import pandas as pd
>>> data = {'District':  ['Ahmednagar', 'Aurangabad','Jalna','Buldhana','Amravati','Nashik','Pune','Palghar'],
        'Soil': ['B','A','D','D','A','B','D','A' ],
    'Irrigated': ['B','B','D','A','A','B','C','A' ],
    'Seed Variety': ['A','B','B','B','A','A','A','D']
        }
>>> data
{'District': ['Ahmednagar', 'Aurangabad', 'Jalna', 'Buldhana', 'Amravati', 'Nashik', 'Pune', 'Palghar'], 'Soil': ['B', 'A', 'D', 'D', 'A', 'B', 'D', 'A'], 'Seed Variety': ['A', 'B', 'B', 'B', 'A', 'A', 'A', 'D'], 'Irrigated': ['B', 'B', 'D', 'A', 'A', 'B', 'C', 'A']}
>>> df = pd.DataFrame (data, columns = ['District','Soil','Irrigated','Seed Variety'])
>>> df
     District  ... Seed Variety
0  Ahmednagar  ...            A
1  Aurangabad  ...            B
2       Jalna  ...            B
3    Buldhana  ...            B
4    Amravati  ...            A
5      Nashik  ...            A
6        Pune  ...            A
7     Palghar  ...            D

[8 rows x 4 columns]
>>> 

1 Ответ

1 голос
/ 18 января 2020

, поэтому, когда все параметры дают различное значение, будет выбран выход для значения столбца орошения [...], если повторяется более 2 раз, то вывод будет отображаться как значение, повторенное 2 раза.

Таким образом, это означает, что единственный случай, когда выходные данные будут отличаться от «Орошаемое», это когда два других столбца «Почва» и «Разновидность семени» имеют одинаковое значение.

Так что я бы начните с заполнения «Output» для соответствия «Irrigated», а затем в последующем установите для него значение одного из других столбцов , где два других столбца имеют одинаковое значение:

df['Output'] = df['Irrigated']
df.loc[df['Soil'] == df['Seed Variety'], 'Output'] = df['Soil']

Это должно сделать это.

Позже, если вы хотите рассчитать общий процент, вы можете сделать это, сравнив полученный «Выход» с исходными столбцами и умножив его на каждый вес:

df['Output(%)'] = (
    (df['Output'] == df['Soil']) * 35.0 +
    (df['Output'] == df['Irrigated']) * 40.0 +
    (df['Output'] == df['Seed Variety']) * 25.0
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...