如何遍历pandas中的行并获得特定但不同的列名

2024-05-13 00:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

数据如下:

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

_1st_absent_on:显示该人员第一次缺席的日期

例如,对于Anshu,此变量的值为2, 对于娜塔莎,这个变量的值是4

任何帮助都将不胜感激


Tags: 数据name人员onabsentday1day4day2
3条回答

一种方法是对行进行迭代,然后使用numpy获取缺少行的行。假设缺席是0

作为pd进口熊猫 将numpy作为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))

这将打印用户缺席的索引列表

免责声明 我不是熊猫方面的专家,所以可能有更好的方法来做这件事,但这是我能想到的

正如你可能有多个缺席每行,我们可以融化的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
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

      

相关问题 更多 >