【问题标题】:Taking a column from a csv file and putting it into a list in python从 csv 文件中取出一列并将其放入 python 中的列表中
【发布时间】:2020-11-23 13:45:21
【问题描述】:

我需要在 python 中编写一些代码,从 csv 文件中获取一列并使其成为一个列表。这是我到目前为止的代码。

import csv
from collections import defaultdict
columns = defaultdict(list)
with open('Team1_BoMInput.csv') as f:
    reader = csv.DictReader(f)
    for row in reader:
        for (k,v) in row.items():
            columns[k].append(v)

y = (columns['Quantity'])
x = (columns[('Actual Price')])

b = ['2', '2', '1', '1', '1', '1', '1', '1', '1', '2', '1', '1', '3', '4', '1', '1', '1', '8', '2', '2', '1', '1', '1', '1', '4', '1', '2', '2', '2', '1', '2', '2', '2', '1', '2', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '3', '2', '1', '1', '1']
a = ['$6.41', '$14.97', '$6.78', '$11.44', '$22.61', '$1.58', '$11.68', '$19.99', '$12.99', '$3.66', '$24.99', '$1.04', '$0.09', '$1.92', '$4.80', '$1.50', '$17.92', '$1.36', '$65.52', '$24.38', '$1.91', '$3.40', '$13.79', '$39.55', '$1.94', '$3.38', '$11.34', '$18.33', '$21.13', '$8.24', '$30.14', '$125.97', '$26.54', '$8.58', '$12.77', '$11.42', '$1.32', '$2.63', '$8.58', '$0.40', '$0.57', '$2.54', '$2.83', '$1.41', '$9.03', '$3.38', '$5.98', '$4.51', '$2.54', '$6.76', '$4.51', '$1.13', '$14.24']

for i in range(0, len(b)):
    b[i] = float(b[i])
print(b)
x = ([s.strip('$') for s in a])
for i in range(0, len(x)):
    x[i] = float(x[i])
print(x)

我希望它从 csv 文件中获取列并使用其值,而不是在程序中列出 a 和 b 的值。 提前致谢

【问题讨论】:

  • 嘿@Irfan S,欢迎来到 StackOverflow!如果您可以提供您遇到的问题以及已发布的内容,这可能会有所帮助。

标签: python python-3.x list csv import


【解决方案1】:

试试这个:

import pandas as pd
df=pd.read_csv("Team1_BoMInput.csv")

y=list(df['Quantity'])
x=list(df['Actual Price'])

【讨论】:

  • @IrfanS 如果可行,请接受我的回答!点击答案左侧的勾选按钮。
【解决方案2】:

参考下面的代码,利用 pandas 库加快计算速度并减少代码

import pandas as pd
df=pd.read_csv("Team1_BoMInput.csv")
quantity_list_value=list(df.loc[:,"Quantity"].astype(float).values)
price_list_value=list(df.loc[:,"Actual Price"].apply(lambda x: x.replace("$","")).astype(float).values)

【讨论】:

    【解决方案3】:

    我认为你的代码不会运行,除非你把它改成这样:

    import csv
    from collections import defaultdict
    columns = defaultdict(list)
    with open('Team1_BoMInput.csv') as f:
        reader = csv.DictReader(f)
        for row in reader:
            for (k,v) in row.items():
                if k not in columns:
                    columns[k] = list()
                columns[k].append(v)
        # Rest of your code
    
    

    【讨论】:

    • 在 pycharm 中,代码目前似乎运行良好,但谢谢。
    • 我忘了在问题中添加一部分,我现在添加了。
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2021-07-02
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多