#python #pandas #numpy #csv
Вопрос:
Я пытаюсь написать код, который принимает определенные (необязательные) входные данные из файла .csv и выводит данные на основе того, какие критерии (входные данные) были заданы, а какие нет. Мне удалось заставить код принимать необязательные входные данные, но я хочу, чтобы программа получала определенные выходные данные из определенных строк файла (например, переменная w-это название компании, я хочу, чтобы она считывала только указанную строку из файла .csv и игнорировала все остальные, то же самое для всех других критериев), поэтому я кое-что попробовал, вот код:
#link CSV
import pandas as pd
df = pd.read_csv(r'C:UsersASUSDocumentsSmall businesses.csv',encoding='latin1')
print(df.to_string())
#Take input
w=str(input('enter name here'))
x=str(input('enter field here'))
y=str(input('enter desired operation size here'))
z=str(input('enter preferred mode of service here'))
#refine output
#to revert what you did if it doesn't work, remove the df statements and convert
#every second if back to elif
if df.iloc[1,4]:
if x == "":
print (y z)
or df.iloc[1,7]:
if y == "":
print (x z)
or df.iloc[1,11]:
if z == "":
print (x y)
or df.iloc[[1,4],[1,7]]:
if x == "" and y == "":
print(z)
or df.iloc[[1,4],[1,11]]:
if x == "" and z == "":
print(y)
or df.iloc[[1,7],[1,11]]:
if y == "" and z == "":
print(x)
or df.iloc[[1,1]]:
if w == "":
print ("accoridng to other guidelines, we find:")
Я знаю, что код неверен, но я просто не знаю, как это исправить, так как я новичок в программировании, я получил эту ошибку: «Значение истинности серии неоднозначно. Используйте a.empty(), a.bool(), a.item(), a.any() или a,все()»
Какие-нибудь исправления? Спасибо
правка: Для всех людей, которые просят меня вставить часть файла .csv, чтобы помочь, вот он: скриншот small business.csv
Вот полная ошибка ядра: Файл «C:UsersASUSuntitled2.py», строка 29, в if df.iloc[[1,4],[1,7]]:
Файл «C:UsersASUSAppDataLocalProgramsSpyderpkgspandascoregeneric.py», строка 1330, в ненулевом f»Значение истинности {типа(self).имя} неоднозначно».
Ошибка значения: Значение истинности кадра данных неоднозначно. Используйте.empty, a.bool(), a.item(), a.any() или a.all(). (извините, я новичок в этом)
Комментарии:
1. Для вопросов, связанных с внешним файлом, вы должны вставить по крайней мере часть файла для справки. В противном случае любой, кто попытается ответить, не сможет проверить свое решение. На данный момент мы не знаем, что у вас внутри
df
, и не можем дать много советов.2. пожалуйста, вставьте пример
Samll businesses.csv
и пример того, что вы собираетесь выводить здесь3. Вы должны показать ошибку вывода, которая будет содержать указатель на источник проблемы… Тем не менее, я предполагаю, что это связано с
df.iloc[[1,4],[1,7]]
типом заявлений. Вы понимаете, что логическое значение списка плохо определено, да? Следовательноall
, илиany
и т. Д…4. Пожалуйста, в будущем публикуйте полную трассировку стека, а не только последнюю строку и не только в заголовке. Это значительно облегчит вам помощь.
5. Я только что добавил часть файла .csv, чтобы помочь, а также добавил полную ошибку
Ответ №1:
df.iloc[[1,4],[1,11]]
и другие подобные операторы возвращают a pd.series
, а не логическое значение.
Чтобы оценить их в операторе If, вы должны свести эти несколько значений в одно логическое значение, используя некоторую логику.
Обычно вы захотите использовать .any()
или .all()
для этого.
Комментарии:
1. Спасибо! Хотя мне жаль, но я довольно новичок в этом и никогда раньше не использовал ни одну из команд (необязательный предмет в школе учит вас только многому, лол) не могли бы вы сказать мне, где/как его использовать, если вы не возражаете? Еще раз спасибо вам!
2. @Shash Что вы хотите знать, чего нет в связанных документах? Любые проверки, соответствует ли какое-либо значение вектора действительности, Все проверки, соответствуют ли они действительности. Не более того.