Python 使用两个数据帧创建列表列表

Python 使用两个数据帧创建列表列表,python,pandas,Python,Pandas,我有两个数据框:1)这里的数据按站点id(从1到98)和时间(从2020年1月27日到2020年5月26日每小时一个数据)分组 在第二个数据帧中,我有一个每个站点id的纬度和经度值 我的目标是创建以下格式的列表: latitude longitude flow hour month day [[53.37947845458979, -1.46990168094635, 278.0, 0.0, 1.0, 27.0], [53.37979125

我有两个数据框:1)这里的数据按站点id(从1到98)和时间(从2020年1月27日到2020年5月26日每小时一个数据)分组

  • 在第二个数据帧中,我有一个每个站点id的纬度和经度值
  • 我的目标是创建以下格式的列表:

         latitude           longitude      flow   hour  month  day
    [[53.37947845458979, -1.46990168094635, 278.0, 0.0, 1.0, 27.0], 
     [53.379791259765604, -1.46999669075012, 122.0, 0.0, 1.0, 27.0], 
     [53.380035400390604, -1.47001004219055, 58.0, 0.0, 1.0, 27.0], ...]
    
    
    以便为第一个数据帧中的每一行创建一个列表[纬度、经度、流量、月、日]。 我尝试了以下代码:

    import pandas as pd
    import datetime as dt
    
    df = pd.read_csv("readings_by_hour.csv")
    df['time'] = pd.to_datetime(df['time'])
    df1 = pd.read_csv("stations_info.csv")
    
    i = 0
    a = []
    b = []
    count = df1['station_id'].count()
    
    while i < count:
        if df['station_id'][i] == df1['station_id'][i]:
            a = print(df1['latitude'][i] + ", " + df1['longitude'][i] + ", " + df['flow'][i] + ", " + df['time'].dt.hour + ", " + df['time'].dt.month + ", " + df['time'].dt.day)
            b += [a]
            i += 1
    
    print(b)
    
    
    将熊猫作为pd导入
    将日期时间导入为dt
    df=pd.read\u csv(“reads\u by\u hour.csv”)
    df['time']=pd.to_datetime(df['time'])
    df1=pd.read\U csv(“站点信息.csv”)
    i=0
    a=[]
    b=[]
    count=df1['station_id'].count()
    当我数的时候:
    如果df['station\u id'][i]==df1['station\u id'][i]:
    a=打印(df1[‘纬度’][i]+”、“+df1[‘经度’][i]+”、“+df[‘流量’][i]+”、“+df[‘时间’].dt.hour+”、“+df[‘时间’].dt.month+”、“+df[‘时间’].dt.day)
    b+=[a]
    i+=1
    印刷品(b)
    

    但它似乎不起作用,虽然没有给出任何错误,但确实没有给出任何输出。

    您可以合并
    station\u id
    列上的两个数据帧,然后创建列表,如下所示:

    merged_df = pd.merge(df, df1, left_on = 'station_id', right_on = 'station_id')
    
    list_of_lists =[] 
      
    # Iterate over each row 
    for index, row in merged_df.iterrows():
    
        # Create list for the current row 
        rowlist =[row.latitude, row.longitude, row.flow, row.hour, row.month, row.day] 
          
        # append the list to the final list 
        list_of_lists.append(rowlist) 
    
    您可以使用
    datetime
    模块从
    Date
    列中提取月、日、小时


    有关更多信息,请参见《pd.merge》上的pandas文档:

    您可以合并
    station\u id
    列上的两个数据帧,然后创建如下列表:

    merged_df = pd.merge(df, df1, left_on = 'station_id', right_on = 'station_id')
    
    list_of_lists =[] 
      
    # Iterate over each row 
    for index, row in merged_df.iterrows():
    
        # Create list for the current row 
        rowlist =[row.latitude, row.longitude, row.flow, row.hour, row.month, row.day] 
          
        # append the list to the final list 
        list_of_lists.append(rowlist) 
    
    您可以使用
    datetime
    模块从
    Date
    列中提取月、日、小时


    有关更多信息,请参阅
    pd.merge
    上的熊猫文档:

    在给定代码中,您试图将打印函数的返回值分配给
    a
    ,然后将其添加到
    b
    。这里,
    a
    的值是
    null
    。因此,当您尝试打印值时,将得到空字符串

    我已经做了更正,这样它就可以工作了。希望能有帮助

    while i < count:
        if df['station_id'][i] == df1['station_id'][i]:
            a = [df1['latitude'][i],df1['longitude'][i], df['flow'][i], df['time'][i].hour,df['time'][i].month,df['time'][i].day]
            b.append(a)
            i += 1
    
    print(b)
    
    而我<计数:
    如果df['station\u id'][i]==df1['station\u id'][i]:
    a=[df1['纬度][i],df1['经度][i],df['流量][i],df['时间][i]。小时,df['时间][i]。月,df['时间][i]。日]
    b、 附加(a)
    i+=1
    印刷品(b)
    
    在给定代码中,您试图将打印函数的返回值分配给
    a
    ,然后将其添加到
    b
    。这里,
    a
    的值是
    null
    。因此,当您尝试打印值时,将得到空字符串

    我已经做了更正,这样它就可以工作了。希望能有帮助

    while i < count:
        if df['station_id'][i] == df1['station_id'][i]:
            a = [df1['latitude'][i],df1['longitude'][i], df['flow'][i], df['time'][i].hour,df['time'][i].month,df['time'][i].day]
            b.append(a)
            i += 1
    
    print(b)
    
    而我<计数:
    如果df['station\u id'][i]==df1['station\u id'][i]:
    a=[df1['纬度][i],df1['经度][i],df['流量][i],df['时间][i]。小时,df['时间][i]。月,df['时间][i]。日]
    b、 附加(a)
    i+=1
    印刷品(b)