为了账号安全,请及时绑定邮箱和手机立即绑定

使用两个 Pandas 数据框创建列表列表

使用两个 Pandas 数据框创建列表列表

翻翻过去那场雪 2023-03-08 16:34:30
我有这两个数据框:1)这里的数据按 station_id(从 1 到 98)和时间(从 27-01-2020 到 26-05-2020 每小时的数据)分组在第二个数据框中,我有每个 station_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], ...]为了让第一个数据框中的每一行都有一个列表 [latitude, longitude, flow, month, day]。我尝试使用以下代码:import pandas as pdimport datetime as dtdf = pd.read_csv("readings_by_hour.csv")df['time'] = pd.to_datetime(df['time'])df1 = pd.read_csv("stations_info.csv")i = 0a = []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 += 1print(b)但它似乎不起作用,尽管它没有给出任何错误,但确实没有给出任何输出。
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您可以合并列上的两个数据框station_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 文档: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html


查看完整回答
反对 回复 2023-03-08
?
倚天杖

TA贡献1828条经验 获得超3个赞

在给定的代码中,您试图将 print 函数的返回值分配给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)


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信