python - 合并两个 DataFrame 的函数

标签 python pandas dataframe

我想编写一个函数来合并来自两个数据框国家/地区和任何给定年份的排放量的数据。

  def mergeByYear(year):
    yearString = str(year)
    result = pd.merge(countries, emissions[yearString], on='Country Code')
    return 

用户输入年份,函数根据年份合并数据框。我的数据样本是:

Country Name    Country Code    Indicator Name  Indicator Code  1960    1961    1962    1963    1964    1965    
0   Aruba   ABW CO2 emissions (metric tons per capita)  EN.ATM.CO2E.PC  NaN NaN NaN NaN NaN NaN

但是上面的函数给了我一个错误“无法将 DataFrame 与类型的实例合并”

谁能告诉我如何解决这个问题?

最佳答案

没有太多有关数据的信息,这就是我可以解决的问题。我认为问题出在 emissions[yearString] 使用单括号而不是双括号。给定一些随机生成的 DataFrame,我可以执行以下操作:

import numpy as np
import pandas as pd

首先,我创建了两个随机数 DataFrame,其中一些可能是您实例中的字符串,但这只是一个快速替代品。

df = pd.DataFrame(np.arange(0, 100, 5).reshape(4,5), columns = ['Year',2,3,4,5])

创建了一列作为伪排放列。

df2 = pd.DataFrame(np.arange(0, 200, 10).reshape(4,5), columns = ['Emissions',7,8,9,10])

将年份数据添加到第二个 DataFrame,然后我们可以使用它与第一个 DataFrame 合并

df2['Year'] = [0, 25, 50, 75] #Used to add year data to the second data Frame

我调用了我想要合并的特定列,包括年份和伪排放列。我在这里使用双括号来调用列列表,以便合并仍然可以访问两个 DataFrame 中的“年份”。

pd.merge(df, df2[['Year', 'Emissions']], on = 'Year')

如果数据帧的分割方式与此不同,请告诉我,我会尝试更改它,以便它对您的解决方案更有意义。

关于python - 合并两个 DataFrame 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889229/

相关文章:

r - 按组高效过滤多列

python - 方法与属性哪个更快?

python - 使用 Python 数据结构表示这一点的最佳方式

python - 根据列值对有序 Pandas 数据框中的行进行分组

r - 如何创建多个子集?

python - 带有列子集的数据框 drop_duplicates

python - 并行过程的最佳种子

python - 在 PyQt 应用程序中嵌入 IPython Qt 控制台

python - Pandas -删除列索引的标签

python - 能否提高海量时序数据之间相关性分析的计算速度?