Доступ к каждому элементу серии, хранящейся в виде списка - PullRequest
1 голос
/ 10 февраля 2020

Я хочу выполнить логическую операцию над каждым элементом моей серии, который хранится в виде списка. Я написал следующий код. Тем не менее, он показывает ошибку «Истинное значение Series является неоднозначным. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().»

Вот код, который я написал:

import pandas as pd
import numpy as np

df_new           = pd.read_excel (r'file_name.xlsx')

columns = df_new.columns
jun = []
for col in columns[1:]:
    jun.append(df_new[col]/84)
for i in range(0,300):
    if jun[i]==1:
        jun.append(jun[i])

Я пытаюсь отладить, и я предполагаю, что последние 3 строки вызывают ошибку. Я не знаю, как получить доступ к каждому элементу из серии, хранящейся в виде списка. Вот почему вышеупомянутая ошибка выскакивает. Пожалуйста, помогите мне понять ошибку.

Ответы [ 3 ]

0 голосов
/ 10 февраля 2020

Надеюсь эта ссылка поможет вам:

import xlrd
path = ("file_name.xlsx")
wb = xlrd.open_workbook(path) 
sheet = wb.sheet_by_index(0) 

print(sheet.ncols,sheet.nrows)

for i in range(sheet.nrows): 
    print(sheet.cell_value(i, 0))
for i in range(sheet.ncols): 
    print(sheet.cell_value(i, 0))
0 голосов
/ 10 февраля 2020

когда вы делаете jun[i]==1, вы сравниваете весь столбец с 1, и вы получаете pandas.core.series.Series, который нельзя оценить в вашем if утверждении: if jun[i]==1:, чтобы исправить, вы можете сделать:

if (jun[i]==1).all():
0 голосов
/ 10 февраля 2020

Вы можете сравнить все значения в столбце, используя df.lo c:

В приведенном ниже коде, если значение в столбце 1 == 0, будет заменено на «Значение равно 0», также вы можно поместить результат в другой столбец.

import pandas as pd

df1.loc[(df1.Col1 == '0'), 'Col1'] = 'Value is 0'
...