【问题标题】:Python 3.4 : Iterate through DataFrame column to match stringsPython 3.4:遍历 DataFrame 列以匹配字符串
【发布时间】:2015-05-26 10:24:08
【问题描述】:

数据

915802|FINANCIAL INVESTORS TRUST|485BPOS|2015-03-19|edgar/data/915802/0001398344-15-001900.txt
1000045|NICHOLAS FINANCIAL INC|SC 13G|2015-03-27|edgar/data/1000045/0001436857-15-000014.txt
1000180|SANDISK CORP|4|2015-02-18|edgar/data/1000180/0001242648-15-000006.txt
1364688|Copano Pipelines/Upper Gulf Coast LLC|424B2|2015-02-24|edgar/data/1364688/0001047469-15-001126.txt
1634066|Robbins Nicholas W.|4|2015-03-25|edgar/data/1634066/0001628280-15-001965.txt
9984|BARNES GROUP INC|4|2015-02-13|edgar/data/9984/0000009984-15-000013.txt
1601072|Abengoa Yield plc|6-K|2015-01-16|edgar/data/1601072/0001193125-15-012191.txt
.....

我目前正在尝试此代码,我尝试将 statList 中的指定值之一与上面的数据匹配,并返回匹配的值和包含特定值的行。

import pandas as pd

q1 = open('/home/aranjohn/StockRec/StockIndex/edgar.full-index.2015.QTR1.master.idx', 'r')

q2 = str.splitlines(q1.read())

statList = ['915802', '1000045', '1364688', '198749', '9984']

for eachStat in statList:
    for eachLine in q2:
        if eachStat in eachLine:
            print(eachStat, eachLine)

我理解这里的逻辑错误,我最终返回每个统计数据和每一行。我将如何返回 eachStat,然后返回包含 eachStat 的行?

期望的输出

915802   edgar/data915802/0001398344-15-001900.txt
1000045  edgar/data/1000180/0001242648-15-000006.txt
1364688  edgar/data/1364688/0001047469-15-001126.txt
9984     edgar/data/9984/0000009984-15-000013.txt

【问题讨论】:

  • 为什么不使用正则表达式?
  • 您需要具体的 10 位星号吗?
  • txt文件有几千行。我需要在每一行中搜索指定值的列表(所以是特定的)并返回指定的列表值和包含该值的行
  • 阅读此docs.python.org/3.4/library/re.html 如果您需要更明确的帮助,请尝试显示您的输入和所需的输出。
  • 我认为我在问题中所做的更改会让事情变得更清楚。

标签: loops python-3.x if-statement


【解决方案1】:

看来,您的代码逻辑还可以。对我有用,有一些变化:

with open('your_data.dat') as f:
    data = str.splitlines(f.read())

statList = ['915802', '1000045', '1364688', '198749', '9984']

for eachStat in statList:
    for eachLine in data:
        if eachStat in eachLine:
            print (eachStat, eachLine.split('|')[-1])

结果就是你想要的输出

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 2017-03-03
    • 1970-01-01
    • 2019-06-06
    • 2015-06-17
    • 1970-01-01
    • 2014-08-31
    • 2020-02-29
    • 1970-01-01
    相关资源
    最近更新 更多