python - 如何根据标题和列值合并两个数据框?

标签 python pandas dataframe merge

我有两个数据框。第一个包含不同城市的数据。

dfTmp:
    City        2005    2007    
0   London       3       7
1   Paris        2       0  

然后是我要填充的数据框

dfData:
    City        Year        
0   London      2005     
1   London      2007     
2   Paris       2005         
3   Paris       2007     

我想合并这两个数据集。然后dfData应该变成如下

dfData:
    City        Year    Value   
0   London      2005     3
1   London      2007     7  
2   Paris       2005     2      
3   Paris       2007     0

最佳答案

您不需要第二个数据框 dfData。您需要的所有数据都在 dfTmp 中。您只需要使用以下方法 reshape dfTmp:

选项 1

使用set_indexstack

dfData = dftmp.rename_axis('Year', 1).set_index('City').stack().reset_index(name='Value')

print(dfData)

输出:

     City  Year  Value
0  London  2005      3
1  London  2007      7
2   Paris  2005      2
3   Paris  2007      0

选项 2

使用融化:

dfData = dftmp.melt(id_vars='City', var_name='Year', value_name='Value')

print(dfData)

输出:

     City  Year  Value
0  London  2005      3
1   Paris  2005      2
2  London  2007      7
3   Paris  2007      0

关于python - 如何根据标题和列值合并两个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46348149/

相关文章:

python - 在python中处理递归错误回溯

python - 如何将使用类 shell 语法创建的空格分隔值 (csv) 文件读取到 DataFrame 中

python - 在 Python 中类似矩阵的二维数组打印

python - 使用 google appengine parent 属性将默认权限应用于对象是个好主意吗?

python-3.x - 导入 Pandas 为 pd ImportError : No module named pandas

python - 使用正则表达式从大型 SFrame 或数据帧中提取信息,而不使用循环

python - 来自 pandas DataFrame 的热图 - 二维数组

python - “DataFrame”对象没有属性 'col_name'

python - 将数百列和列索引连接成一个字符串

python - 如何将包含日期列表作为字符串的列展平为日期?