当前位置: 首页 > 知识库问答 >
问题:

试图合并2个数据页但得到值错误

盖高畅
2023-03-14

下面是我保存在两个变量中的两个数据:

> print(df.head())
>
          club_name  tr_jan  tr_dec  year
    0  ADO Den Haag    1368    1422  2010
    1  ADO Den Haag    1455    1477  2011
    2  ADO Den Haag    1461    1443  2012
    3  ADO Den Haag    1437    1383  2013
    4  ADO Den Haag    1386    1422  2014
> print(rankingdf.head())
>
           club_name  ranking  year
    0    ADO Den Haag    12    2010
    1    ADO Den Haag    13    2011
    2    ADO Den Haag    11    2012
    3    ADO Den Haag    14    2013
    4    ADO Den Haag    17    2014
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
> print(new_df.head()) 
> 

      club_name  tr_jan  tr_dec  year    ranking
0  ADO Den Haag    1368    1422  2010    12
1  ADO Den Haag    1455    1477  2011    13
2  ADO Den Haag    1461    1443  2012    11
3  ADO Den Haag    1437    1383  2013    14
4  ADO Den Haag    1386    1422  2014    17

其代码:

df = pd.DataFrame(data_points, columns=['club_name', 'tr_jan', 'tr_dec', 'year'])
df.to_csv('preliminary.csv')

df = pd.read_csv('preliminary.csv', index_col=0)

ranking_df = pd.DataFrame(rankings, columns=['club_name', 'ranking', 'year'])

new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')

我认为这与index_col=0参数有关。但我不知道在不保存它的情况下修复它,这并不重要,但我不得不这样做是一种烦恼。

共有1个答案

秦俊豪
2023-03-14

在一个数据页中,year是字符串,另一个是int64,您可以先转换它,然后联接(例如df['year']=df['year'].astype(int)或RafaelC建议的df.year.astype(int))

Edit:还请注意Anderson Zhu的注释:如果您的数据页中没有none或缺少值,则需要使用int64而不是int。参见这里的参考资料。

 类似资料:
  • 问题内容: 这是我保存在两个变量中的两个数据框: 我正在尝试使用以下代码合并这两个: 添加how =’left’的原因是,我的ranking_df中的数据点少于标准df中的数据点。 预期的行为是这样的: 但是我得到这个错误: ValueError:您正在尝试合并object和int64列。如果要继续,则应使用pd.concat 但是我不希望使用concat,因为我想合并树而不只是添加它们。 我想到

  • 我得合并两个DF。一个是我的主df,另一个有很多NaN 合并应该只是“忽略”NaN值,并且只在列值不是NaN的地方合并。我尝试了不同的方法,但是df2中的数据有几十种可能出现NaN值。df1有168K行,df2大约有170行,应该与任何与所有非NAN值匹配的相关联。有人知道如何有效地做到这一点吗? 经过对不同方法的广泛研究,似乎一个“神奇”的方式忽略NaNs可能是不存在的。我想在df2上应用一个掩

  • 当尝试ViewChild时,我会得到错误。错误为“未提供'opts'的参数。” @ViewChild都给出了错误。 ts(11,2):错误TS2554:应为2个参数,但得到1。

  • Im使用okhttp 2.5.0,Im获取一张pic,然后将其转换为base 64格式,然后将其作为post变量发送到服务器,然后将其解码回jpg格式并保存到服务器....当我使用像1兆像素(0.5MB)的小图像时,它可以完美地工作······但是当我增加分辨率时,这个异常发生了...

  • 我试图实现合并排序,但得到的输出是相同的数组。这种合并排序给了我与输入相同的输出。请帮忙。我很确定这个实现是正确的,我试着调试它,但没有发现错误。 解决:我在比较helper[左]和helper[中]而不是helper right。谢谢帮助的人。