从数据框架中读取最后一列是一个问题

时间:2018-04-25 10:22:56

标签: python pandas

我正在尝试使用列名读取Dataframe中的最后一列,但是错误输出了 以下是我的代码

f = open('E:\Downloads\Goods&Transit.csv', 'rU')
readfile = csv.reader(f, delimiter = ';')
input_file = [list(line) for line in readfile]
headers = input_file.pop(0)
df = pd.DataFrame(list(input_file), columns= headers)
print df['Receivables']
f.close()

当我打印Receivables列时 - 它的抛出键错误(但数据框有该列)

我的csv文件
enter image description here

打印标题:

  ['PO Number', 'PO Type', 'Location', 'Vendor Number', 'Product ID', 'Planned Delivery Date', 'Receivables

文本格式的csv文件
采购订单编号;采购订单类型;位置;供应商编号;产品编号;计划交货日期;应收款项
7000002174; DP06; 1006; 0000010055; P26220C00000E10; 2014年5月31日; 205.000-
7000001994; DP06; 1006; 0000010662; P60514X00000010; 2014年6月4日; 8000.000
7600000238; IM06; 1006; 0000020257; R87M45X06000020; 2014年4月30日; 4350.000
7600000238; IM06; 1006; 0000020257; R87M47F06000020; 15.04.2014; 2700.000

应收款管理系列有单引号 是导致任何问题的 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我建议直接使用Pandas的csv-reader:

filename = 'E:\Downloads\Goods&Transit.csv'
pd.read_csv(filename, sep= ';')

我不得不承认:通过开放式列表和列表列表,我也会遇到错误......

但直截了当的熊猫方式就像一个魅力:

s = 'PO Number;PO Type;Location;Vendor Number;Product ID;Planned Delivery Date;Receivables\n 7000002174;DP06;1006;0000010055;P26220C00000E10;31.05.2014;205.000-\n7000001994;DP06;1006;0000010662;P60514X00000010;06.04.2014;8000.000\n 7600000238;IM06;1006;0000020257;R87M45X06000020;30.04.2014;4350.000\n 7600000238;IM06;1006;0000020257;R87M47F06000020;15.04.2014;2700.000'

from io import StringIO
import pandas as pd

df = pd.read_csv(StringIO(s), sep=';')

df.head()
Out[1]: 
    PO Number PO Type  Location  Vendor Number       Product ID  \
0  7000002174    DP06      1006          10055  P26220C00000E10   
1  7000001994    DP06      1006          10662  P60514X00000010   
2  7600000238    IM06      1006          20257  R87M45X06000020   
3  7600000238    IM06      1006          20257  R87M47F06000020   

  Planned Delivery Date Receivables  
0            31.05.2014    205.000-  
1            06.04.2014    8000.000  
2            30.04.2014    4350.000  
3            15.04.2014    2700.000  

df.columns
Out[2]: 
Index(['PO Number', 'PO Type', 'Location', 'Vendor Number', 'Product ID',
   'Planned Delivery Date', 'Receivables'],
  dtype='object')

df['Receivables']
Out[3]: 
0    205.000-
1    8000.000
2    4350.000
3    2700.000
Name: Receivables, dtype: object