Сравните каждый элемент значения строки в pandas Df и введите строку, основанную на сравнении - PullRequest
0 голосов
/ 23 января 2019

Я новичок в обращении с пандами Df.Я хочу сравнить элементы каждого столбца каждой строки.

Требование: Если все элементы в столбцах 1 строки равны нулю, введите «Больше ложных» в новый столбец, заполненный нулями, соответствующими его индексу.

См. Ниже Df для ясного понимания

My Data Frame:

       Time     Brake      Speed         Strgangle   index   Target
0     1678.39  0.000000   0.000000        0.000000  167739      0
1     1678.40  15.00000   0.000000        0.000000  167740      0
2     1678.41  0.000000   8.000000        0.000000  167741      0
3     1678.42  0.000000   0.000000        2.000000  167742      0
4     1678.43  5.000000   20.10000        0.000000  167743      0
5     1678.44  0.150000   0.000000        -1.16500  167744      0
6     1678.45  0.000000   20.10           2.000000  167742      0
7     1678.47  0.150000   25.00000        -1.16500  167744      0


My Requirement :

1. If Brake = 0, Speed =0, Strg angle=0 
--> Input a str in corresponding Target index as 'More False'
2. If Brake = Value, Speed = Value, Strg angle=Value 
--> Input a str in corresponding Target index as 'More True'
3. As above conditions i should input the string in Target column based on my requirement

.

Требуется фактический Df:

       Time     Brake      Speed         Strgangle   index   Target
0     1678.39  0.000000   0.000000        0.000000  167739      MoreFalse
1     1678.40  15.00000   0.000000        0.000000  167740      False
2     1678.41  0.000000   8.000000        0.000000  167741      False
3     1678.42  0.000000   0.000000        2.000000  167742      False
4     1678.43  5.000000   20.10000        0.000000  167743      True
5     1678.44  0.150000   0.000000        -1.16500  167744      True
6     1678.45  0.000000   20.10           2.000000  167742      True
7     1678.47  0.150000   25.00000        -1.16500  167744      MoreTrue

Я попытался использовать цикл If для ввода необходимой строкив столбце Target, но я получаю предупреждение SettingWithcopy.

Я уверен, что для вышеуказанной проблемы будет легкий подход.

1 Ответ

0 голосов
/ 23 января 2019

Поскольку у вас есть только 4 возможности, найдите количество ненулевых значений в столбцах, затем сопоставьте результат:

d = {0: 'MoreFalse', 1: 'False', 2: 'True', 3: 'MoreTrue'}
df['Target'] = df[['Brake', 'Speed', 'Strgangle']].ne(0).sum(1).map(d)

Вывод:

      Time  Brake  Speed  Strgangle   index     Target
0  1678.39   0.00    0.0      0.000  167739  MoreFalse
1  1678.40  15.00    0.0      0.000  167740      False
2  1678.41   0.00    8.0      0.000  167741      False
3  1678.42   0.00    0.0      2.000  167742      False
4  1678.43   5.00   20.1      0.000  167743       True
5  1678.44   0.15    0.0     -1.165  167744       True
6  1678.45   0.00   20.1      2.000  167742       True
7  1678.47   0.15   25.0     -1.165  167744   MoreTrue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...