как перебирать строки в pandas и получать спецификацию c, но другое имя столбца - PullRequest
0 голосов
/ 07 августа 2020

Данные:

name day1 day2 day3 day4
anshu  1   .     1    1
Yash   1   1     .    1
Natasha 1  1     1    .

_1st_absent_on: показывает, в какой день человек отсутствовал 1-м.

Например, для Anshu эта переменная будет принимать значение 2, а для Наташи эта переменная примет значение 4.

Любая помощь будет принята с благодарностью

Ответы [ 3 ]

0 голосов
/ 07 августа 2020

так как вы можете иметь несколько отсутствий в строке, мы можем растопить df и взять последний день.

df['lastabscence'] = df["name"].map(
    pd.melt(df, id_vars="name")
    .query('value == "."')
    .groupby("name")["variable"].last()
)



      name  day1 day2 day3 day4 lastabscence
0    anshu     1    .    .    1         day3
1     Yash     1    1    .    1         day3
2  Natasha     1    1    1    .         day4
0 голосов
/ 07 августа 2020

Один из способов сделать это - перебрать строки, а затем использовать numpy для выборки строк, в которых они отсутствуют. Предположим, что это отсутствует - это 0

import pandas as pd import numpy as np

d = {'fname': ['anshu', 'arth', 'natasha', 'saurav'], 'day1': [1, 1, 1, 1], 'day2': [0, 1, 1, 1], 'day3': [1, 0, 1, 1], 'day4': [1, 1, 0, 1]}
df = pd.DataFrame(data=d)

for i, row in df.iterrows():
    print(row['fname'], np.where(row[1:] == 0))

Это напечатает список индексов, по которым пользователь отсутствовал.

Заявление об ограничении ответственности Я не эксперт по pandas, так что, вероятно, есть лучший способ сделать это, но это то, что я мог придумать в своей голове.

0 голосов
/ 07 августа 2020
import pandas as pd
data = pd.read_csv(filePath,header=None)

data['_1st_absent_on'] = None
for row in range(1, data.shape[0]):
   for col in range(data.shape[1]-1):
      #print(data[col][row])
      if data[col][row] == '.':
          print('{} 1st absent on: {}'.format(data[0][row], data[col][0]))
          data.iloc[row, data.shape[1]-1] = col+1
          break

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