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