【问题标题】:Python Pandas dataframe "for"Python Pandas 数据框“for”
【发布时间】:2021-08-23 01:11:17
【问题描述】:

我是 python 和 pandas 的新手,我正在尝试构建一个小机器人。也许有人可以帮助我:

我在 sqlite 中有这些数据:

Table users
ID   name   surname    phone    timestamp
1    elon    mask      33333    2021-08-22 22:01 
2    elon    mask      33333    2021-08-22 22:02
3    elon    mask      33333    2021-08-22 22:03
4    ector   vik       44444    2021-08-22 22:01
5    ector   vik       44444    2021-08-22 22:02
............... etc.........

我从 db 获取数据 2 次并且: 只有按日期的列名(只有一个用户名 1 次),我保存到 CSV

listc = c.execute("SELECT Pair FROM users WHERE Timestamp = '"+time1min+"' ".format(',')) 
df_to_output = pd.DataFrame(listc)
df_to_output.to_csv("nameusers.csv", index=False)

现在我获取所有数据并将其转换为 pd 数据帧(我写它工作得更快),没有列 ID。

df = pd.read_sql_query("SELECT * from users", con) df.drop('ID', axis=1, inplace=True)

现在如果我按日期和名称检索数据

    #i declare timeframe 
timenow = time.strftime('%Y-%m-%d %H:%M')
    time1min = (datetime.datetime.now() + datetime.timedelta(minutes = -1)).isoformat(timespec='minutes', sep=' ')

# i declare name to find
t1 = (df.loc[df['name'] == 'elon'])

一切正常。

我无法理解的是如何执行一个循环,在其中查询所有名称行的所有数据(我创建带有名称列表的 nameusers.csv)。 我试过了

ListPair=pd.read_csv("nameusers.csv")
for row in Listnames.iterrows():
     t1 = (df.loc[df['name'] == '{row}'])

但我收到 [] ... 为空 也许有人可以开车送我。

【问题讨论】:

    标签: python pandas dataframe csv


    【解决方案1】:

    请将代码更改为for index, row in Listnames.iterrows():并再次检查。

    【讨论】:

      【解决方案2】:

      假设nameusers.csv 中有某种名称列,请尝试以下操作:

      dfONE = pd.DataFrame({'ID': {1: 'elon', 2: 'elon', 3: 'elon', 4: 'ector', 5: 'ector'},
       'name': {1: 'mask', 2: 'mask', 3: 'mask', 4: 'vik', 5: 'vik'},
       'surname': {1: 33333, 2: 33333, 3: 33333, 4: 44444, 5: 44444},
       'phone': {1: '2021-08-22',
        2: '2021-08-22',
        3: '2021-08-22',
        4: '2021-08-22',
        5: '2021-08-22'},
       'timestamp': {1: '22:01', 2: '22:02', 3: '22:03', 4: '22:01', 5: '22:02'}})
      
      dfTWO = pd.DataFrame({'Name': {0: 'john', 1: 'harry', 2: 'mask'}, 'Col2': {0: 'a', 1: 'b', 2: 'c'}})
      
      print(dfONE, '\n')
      print(dfTWO, '\n')
      print('# Using the "Name" (captial N) from dfTWO filter the "name" (lowercase N) column in dfONE ')
      print(dfONE.loc[dfONE['name'].isin(dfTWO['Name'])])
      

      输出:

            ID  name  surname       phone timestamp
      1   elon  mask    33333  2021-08-22     22:01
      2   elon  mask    33333  2021-08-22     22:02
      3   elon  mask    33333  2021-08-22     22:03
      4  ector   vik    44444  2021-08-22     22:01
      5  ector   vik    44444  2021-08-22     22:02 
      
          Name Col2
      0   john    a
      1  harry    b
      2   mask    c 
      
      # Using the "Name" (captial N) from dfTWO filter the "name" (lowercase N) column in dfONE 
           ID  name  surname       phone timestamp
      1  elon  mask    33333  2021-08-22     22:01
      2  elon  mask    33333  2021-08-22     22:02
      3  elon  mask    33333  2021-08-22     22:03
      

      【讨论】:

        猜你喜欢
        • 2023-02-07
        • 1970-01-01
        • 2018-05-22
        • 2021-06-25
        • 2018-03-15
        • 2014-07-28
        • 2018-10-14
        • 2018-05-14
        • 2017-05-14
        相关资源
        最近更新 更多