你好,我一直在努力解决这个问题,我正在尝试迭代行并从中选择数据,然后将它们分配给变量。这是我第一次使用pandas,我不知道如何选择数据
reader = pd.read_csv(file_path, sep="\t" ,lineterminator='\r', usecols=[0,1,2,9,10],)
for row in reader:
print(row)
#id_number = row[0]
#name = row[2]
#ip_address = row[1]
#latitude = row[9]
这是我想分配给变量的行的输出:
^{pr2}$编辑:也许这不是熊猫的问题,而是一般的Python。我对python相当陌生,我试图实现的是逐行解析制表符分隔的文件,并将数据分配给变量并在一个循环中打印它们。在
以下是输入文件示例:
050263 128.2.211.113 planetlab-1.cmcl.cs.cmu.edu NA US Allegheny County Pittsburgh http://www.cs.cmu.edu/ Carnegie Mellon University 40.4446 -79.9427 unknown
050264 128.2.211.115 planetlab-3.cmcl.cs.cmu.edu NA US Allegheny County Pittsburgh http://www.cs.cmu.edu/ Carnegie Mellon University 40.4446 -79.9427 unknown
您需要为每一行添加的值是相同的,还是需要处理该值以确定添加的值?如果是一致的,您可以简单地使用pandas对数据集进行矩阵运算来应用此和。如果需要逐行处理,则上述解决方案肯定是正确的。如果它是一个必须逐行添加的变量表,则可以通过将它们全部转储到与数据集对齐的列中,使用pandas逐行添加,然后简单地打印出完整的数据帧。假设您有三列要添加,并将它们放入一个新的列[e]。在
df['e']=数据框a+df.b+df.d
或者,如果它是一个常数:
df['e']=df.a+df.b+{constant}
然后删除不需要的列(如上面的df['a']和df['b'])
显然,如果需要根据每行的唯一值进行计算,请将这些值放入另一列中,并按上述方法求和。在
您可以使用
iterrows()
:或者,如果要按列的索引访问:
^{pr2}$您描述的一般工作流程是:您希望读入csv,在文件中找到具有特定ID的行,并将该行中的所有值解压为变量。这对熊猫来说很简单。在
看起来CSV文件中至少有10列。提供usecols参数应该过滤掉您不感兴趣的列,read_cv将在加载到pandas DataFrame对象(您称之为reader)时忽略它们。在
你想做什么的步骤:
pd.read_csv()
读取数据文件。您已经这样做了,但是我建议您调用这个变量df而不是reader,因为read_csv返回的是一个DataFrame对象,而不是reader对象。您还将发现使用names参数读取_csv以将列名分配给dataframe非常方便。看起来您希望names=['id', 'ip_address', 'name', 'latitude','longitude']
将它们作为列。(假设col10是经度,这就说明9,10是lat/long对)row = df.query("id == 50000")
lat = row['lat']
lon = row['long]
相关问题 更多 >
编程相关推荐