我可以打开和读取一个csv文件,并使用CSV模块打印选定的列。但是,我无法提取几列并将其使用CSV模块存储在LIST中
我的文件只有4列(名称,团队,大学和薪水),我只想提取2列,即NAME和SALARY,然后我从SALARY COLUMN计算所有薪水。我在寻找CSV模块解决方案,而不是熊猫。这是一个奇怪的要求。
下面是我的代码:
$posts = NewJob::with('client_info','office_info')
->orderBy('won', 'desc')
->where('progress' , 'forwarded')
->Where('won', 'like', '%' . $request->session()->get('search') . '%')
->orWhere('proj_name', 'like', '%' . $request->session()->get('search') . '%')
->orWhere('client_infos.name', 'like', '%' . $request->session()->get('search') . '%')
->orWhere('office_infos.level', 'like', '%' . $request->session()->get('search') . '%')
->paginate(5);
答案 0 :(得分:1)
您可以这样做:
df = pd.read_csv(filename, usecols=['Name', 'Salary'])
答案 1 :(得分:1)
如果我正确理解:
import csv
data = []
with open('nba.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append({'name': row['Name'], 'salary': float(row['Salary'])})
print(sum(x['salary'] for x in data))
与csv.reader()
导入csv
data = []
with open('test.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
data.append({'name': row[0], 'salary': row[3]})
print(sum(float(x['salary']) for x in data[1:]))
答案 2 :(得分:1)
如果您对性能有所关注,可以使用operator.itemgetter来获取所需的列。
>>> igetter = operator.itemgetter(0, 3)
>>> with open('nba.csv') as f:
... reader = csv.reader(f)
... next(reader) # Skip header row
... data = [igetter(row) for row in reader]
...
['Name', 'Team', 'College', 'Salary']
>>> data
[('Avery Bradley', '7730377'), ('Jae Crowder', '6796117'), ('John Holland', '1749840'), ('R. J. Hunter', '1148640')]
>>> total_salary = sum(int(salary) for _, salary in data)
>>> total_salary
17424974
itemgetter
也可以与DictReader
一起使用:
>>> igetter = operator.itemgetter('Name', 'Salary')
>>> with open('nba.csv') as f:
... reader = csv.DictReader(f)
... data = [igetter(row) for row in reader]
...
>>> data
[('Avery Bradley', '7730377'), ('Jae Crowder', '6796117'), ('John Holland', '1749840'), ('R. J. Hunter', '1148640')]
答案 3 :(得分:-1)
除非文件很小,否则不要使用Pandas。熊猫超级慢。
import csv
data_list = []
with open('nba.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data_list.append([row['Name'], row['Salary']])