Как я могу ссылаться на конкретные ячейки в кадре данных? - PullRequest
0 голосов
/ 25 октября 2019

Я новичок, и это мой первый проект. Я искал ответ, но он все еще не ясен. Я импортировал лист из Excel, используя Pandas ..

** Кролик Класс:

 Num  Behavior  Speaking  Listening

0                1         3         1          1

1                2         1         1          1

2                3         3         1          1

3                4         1         1          1

4                5         3         2          2

5                6         3         2          3

6                7         3         3          1

7                8         3         3          3

8                9         2         3          2

Что я хочу сделать, это создать, если функции .. напр. если поведение учащегося - «1», я хочу, чтобы он напечатал одну строку, иначе напечатает другую строку. Как я могу ссылаться на конкретную ячейку рабочего листа, чтобы настроить такую ​​функцию? Я попытался: val = df.at (1, "Поведение"), но это явно не работает .. Вот код, который я до сих пор ..

import os
import pandas as pd

from pandas import ExcelWriter
from pandas import ExcelFile

path = r"C:\Users\USER\Desktop\Python\rabbit_class.xls"

print("Rabbit Class:")
print(df)

Ответы [ 4 ]

0 голосов
/ 28 октября 2019

Спасибо всем за ваши ответы. Я наконец понял, что я пытался сделать, используя следующий код:

i = 0
for i in df.index:
student_number = df["Student Number"][i]
print(student_number)
student_name = student_list[int(student_number) - 1]
behavior = df["Behavior"][i]
if behavior == 1:
    print("%s's behavior is good" % student_name)
elif behavior == 2:
    print ("%s's behavior is average." % student_name)
else:
    print ("%s's behavior is poor" % student_name)
speaking = df["Speaking"][i]
0 голосов
/ 25 октября 2019

Также вы можете сделать

dff = df.loc[df['Behavior']==1]
if(not(dff.empty)):
    # do Something
0 голосов
/ 25 октября 2019

Надеюсь, приведенный ниже пример поможет вам

import pandas as pd

df = pd.read_excel(r"D:\test_stackoverflow.xlsx")
print(df.columns)

def _filter(col, filter_):
    return df[df[col]==filter_]

print(_filter('Behavior', 1))
0 голосов
/ 25 октября 2019

Вам нужно найти строки, где df.Behavior равно 1. Используйте любой из следующих трех методов.

# Method-1
df[df["Behavior"]==1]
# Method-2
df.loc[df["Behavior"]==1]
# Method-3
df.query("Behavior==1")

Вывод:

   Num  Behavior  Speaking  Listening  LastColumn
0    0         1         3          1           1

Примечание: фиктивные данные

В ваших данных образца отсутствует заголовок столбца (последний). Поэтому я назвал его LastColumn и считал данные как фрейм данных.

# Dummy Data
s = """
Num  Behavior  Speaking  Listening LastColumn
0                1         3         1          1
1                2         1         1          1
2                3         3         1          1
3                4         1         1          1
4                5         3         2          2
5                6         3         2          3
6                7         3         3          1
7                8         3         3          3
8                9         2         3          2
"""
# Make Dataframe
ss = re.sub('\s+',',',s)
ss = ss[1:-1]
sa = np.array(ss.split(',')).reshape(-1,5)
df = pd.DataFrame(dict((k,v) for k,v in zip(sa[0,:], sa[1:,].T)))
df = df.astype(int)
df

enter image description here

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