您好我一直在努力解决这个问题,我尝试迭代行并从中选择数据,然后将它们分配给变量。这是我第一次使用熊猫,我不知道如何选择数据
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]
这是我想要分配给变量的行的输出:
050000
129.240.228.138
planetlab2.simula.no
59.93
编辑:对于大熊猫而言,这可能不是问题,但对于普通的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
答案 0 :(得分:0)
您可以使用iterrows()
:
df = pandas.read_csv(file_path, sep=',')
for index, row in df.iterrows():
value = row['col_name']
或者,如果您想通过列的索引访问:
df = pandas.read_csv(file_path, sep=',')
for index, row in df.iterrows():
value = row.ix[0]
答案 1 :(得分:0)
您要描述的一般工作流程是:您想要读取csv,在文件中找到具有特定ID的行,并将该行中的所有值解压缩到变量中。这对熊猫来说很简单。
看起来CSV文件中至少有10列。提供usecols arg应该过滤掉你不感兴趣的列,read_csv在加载到pandas DataFrame对象(你称之为reader)时会忽略它们。
做你想做的事的步骤:
pd.read_csv()
读取数据文件。你已经完成了这个,但我建议调用这个变量df而不是reader,因为read_csv返回一个DataFrame对象,而不是Reader对象。您还会发现使用read_csv的names参数将列名称分配给数据帧很方便。看起来您希望names=['id', 'ip_address', 'name', 'latitude','longitude']
将这些作为列。 (假设col10是经度,这意味着9,10将是纬度/长对)row = df.query("id == 50000")
lat = row['lat']
lon = row['long]
答案 2 :(得分:0)
您需要为每行添加相同的值,还是需要处理该值以确定添加的值?如果它是一致的,您可以简单地使用pandas对数据集执行矩阵运算来应用此总和。如果需要逐行处理,上述解决方案肯定是正确的。如果它是必须逐行添加的变量表,则可以通过将它们全部转储到与数据集对齐的列中来执行此操作,使用pandas逐行添加,并简单地打印出完整的数据帧。假设您要添加三列,并将其放入新列[e]。
df [' e'] = df.a + df.b + df.d
或者,如果是常数:
df [' e'] = df.a + df.b + {constant}
然后放下你不需要的栏目(如上所述[' a']和df [' b'])
显然,如果您需要根据每行的唯一值进行计算,请将值放入另一列并按上述总和。