В python, как я могу найти в CSV-файле определенное ключевое слово и отредактировать ячейку, следующую за ним, используя pandas? - PullRequest
0 голосов
/ 05 августа 2020

В python, как я могу найти в CSV-файле определенное ключевое слово и отредактировать ячейку после него? Я немного новичок в программировании, поэтому, скорее всего, я делаю что-то явно не так.

Это для проекта системы инвентаризации, и у меня будет список предметов с названием, количеством и ценой в CSV-файл.

Так, например, если в CSV-файле показан пример ниже, и я хочу найти игрушку и изменить количество, как мне это сделать?

[Item_Name]    [Quantity]]   [Price]
[toy],             [8],       [10]
[book],            [32],       [5]

Вот что есть на данный момент

import csv
import pandas as pd
inventory_data = pd.read_csv('inventory_list_1.csv')
existing_item = input('What is the name of the item you would like to edit')
existing_quantity = input ('what is the new quantity')
inventory_data.loc[inventory_data.Item_Name == existing_item, 'Quantity'] = existing_quantity

Спасибо за любую помощь, которую вы можете мне оказать.

Ответы [ 2 ]

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

Это то, чем я закончил

import pandas as pd
import csv
pd.set_option('expand_frame_repr', False)
inventory_data = pd.read_csv('inventory_list_1.csv')
existing_item = input('Enter the name of the existing product name')
new_quantity = input("Enter the new quantity for the product")
find_item = inventory_data['Item_Name'].astype(str).str.contains(existing_item)
inventory_data.loc[find_item,'Quantity'] = new_quantity
inventory_data.to_csv('inventory_list_1.csv', index=False, quoting=1)
0 голосов
/ 05 августа 2020
file = open('inventory_list_1.csv')
lines = file.readlines()
file.close()

# We're going to ignore the first line.
lines = [line.strip() for line in lines[1:]] 

Это называется нарезкой списка. только начиная с индекса 1 и далее добавляйте понимание списка, чтобы исключить любые пробелы. Теперь, когда у нас есть эти строки, мы можем перебирать их:

for line in lines:
    toy_data = line.split(',')
    # the list will have 3 elements; item_name,qty,price
    item_name = toy_data[0].title()
    quantity = toy_data[1]
    price = toy_data[2]
    
    # now we can print a nice line
    print(f"We have {quantity} pieces of {toy_name} priced at {price}.")

Если вы хотите изменить цену book, просто сделайте следующее:

for line in lines:
    if line[0] == 'book':
        line[2] = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...