正在将制表符分隔的值从文本文件解析为变量

2024-09-30 01:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我一直在努力解决这个问题,我正在尝试迭代行并从中选择数据,然后将它们分配给变量。这是我第一次使用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

Tags: 文件数据httpcsreaderrowusedu
3条回答

您需要为每一行添加的值是相同的,还是需要处理该值以确定添加的值?如果是一致的,您可以简单地使用pandas对数据集进行矩阵运算来应用此和。如果需要逐行处理,则上述解决方案肯定是正确的。如果它是一个必须逐行添加的变量表,则可以通过将它们全部转储到与数据集对齐的列中,使用pandas逐行添加,然后简单地打印出完整的数据帧。假设您有三列要添加,并将它们放入一个新的列[e]。在

df['e']=数据框a+df.b+df.d

或者,如果它是一个常数:

df['e']=df.a+df.b+{constant}

然后删除不需要的列(如上面的df['a']和df['b'])

显然,如果需要根据每行的唯一值进行计算,请将这些值放入另一列中,并按上述方法求和。在

您可以使用iterrows()

df = pandas.read_csv(file_path, sep=',')
for index, row in df.iterrows():
    value = row['col_name']

或者,如果要按列的索引访问:

^{pr2}$

您描述的一般工作流程是:您希望读入csv,在文件中找到具有特定ID的行,并将该行中的所有值解压为变量。这对熊猫来说很简单。在

看起来CSV文件中至少有10列。提供usecols参数应该过滤掉您不感兴趣的列,read_cv将在加载到pandas DataFrame对象(您称之为reader)时忽略它们。在

你想做什么的步骤:

  1. 使用pd.read_csv()读取数据文件。您已经这样做了,但是我建议您调用这个变量df而不是reader,因为read_csv返回的是一个DataFrame对象,而不是reader对象。您还将发现使用names参数读取_csv以将列名分配给dataframe非常方便。看起来您希望names=['id', 'ip_address', 'name', 'latitude','longitude']将它们作为列。(假设col10是经度,这就说明9,10是lat/long对)
  2. 在dataframe对象中查询具有您感兴趣的ID的行。有多种方法可以做到这一点。一个是using the query syntax。很难知道为什么不需要更详细的特定行,但是可以在pandas中查找有关索引查找的更多信息。示例:row = df.query("id == 50000")
  3. 给定一行,您需要将行值提取到变量中。如果为数据帧指定了列名,这很容易。可以将行视为值字典。E、 g.lat = row['lat']lon = row['long]

相关问题 更多 >

    热门问题