【发布时间】:2015-11-08 17:39:42
【问题描述】:
First.csv
LAC Reference_Count
1000 500
2222 1000
3333 500
5555 1000
9999 1500
Second.csv
LAC 10/08/15 00:00 10/08/15 01:00
1000 2000 2500
2222 3000 4000
我有两个文件 first.csv 和 second.csv,在 first.csv 我有两个标题 LAC 和引用计数,second.csv 没有标题可以是任何数字,但它将遵循一种格式,即一列LAC 所有 id,后跟时间日期序列,我需要从 second.csv 中获取 LAC(id),并在 first.csv 的 LAC 中搜索,获取引用计数并减去 second.csv 的所有时间序列的值。您可以通过预期输出更好地理解。
second.csv
LAC 10/08/15 00:00 10/08/15 01:00
0 1000 1500 2000
1 2222 2000 3000
这是我的代码
import pandas as pd
location='/home/saiharsh/Documents/Crowd Street/BUgs/second.py.csv'
master_lac_path='/home/saiharsh/Documents/Crowd Street/Final/first.csv'
master_csv_file = master_lac_path
df_master=pd.read_csv(master_csv_file,error_bad_lines=False)
df2=pd.read_csv(location,error_bad_lines=False)
header=list(df2.iloc[:,1:].columns.values)
print df2
for i in range(len(df2)):
val=df_master[df_master['LAC']==df2['LAC'][i]]['Reference_Count']
for j in header:
Tmp=df2[j][i]
tmp=df2[df2[j]==Tmp][j]
value=tmp-val
print type(tmp),type(val),type(value)
df2.set_value(i,j,value)
print df2
我收到了这个错误
Traceback (most recent call last):
File "/home/Py_Process_Plots/master_lac.py", line 14, in process
value=tmp-val
File "/home/software/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 524, in wrapper
arr = na_op(lvalues, rvalues)
File "/home/software/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 475, in na_op
result[mask] = op(x[mask], _values_from_object(y[mask]))
TypeError: unsupported operand type(s) for -: 'str' and 'float'
我的 pandas 版本是 0.16.2,numpy 是 1.9.2
请帮我解决问题。
【问题讨论】: