在特定位置将一个excel中的行合并到另一个excel中

2024-06-16 13:05:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个excel文件,其中列的名称为 ‘州/作物/地区’、‘年’、‘季节’、‘面积(公顷)’、‘产量(吨)’、‘产量(吨/公顷)’

在一个excel文件中,我有4年来不同州和州下不同作物的数据,以及不同地区这些作物的数据

在另一个文件中,我也有同样的数据,但只有一年

我想将第二个文件中这一年的数据粘贴到第一个文件中特定地区的年份下面。我想在特定地区的第一份文件中添加上一年之后的2017-18年

下面是我在两个excel文件中的数据示例。第二份文件仅包含2017-18年的数据。我有不同的州,其中一个是“安达曼和尼科巴群岛”,然后是不同的作物名称,其中一个是“阿尔哈尔/图尔”,然后是不同的地区,如“1.北部…”和“2.南部…”

State/Crop/
District    Year    Season  Area (Hectare)  Production         Yield 
                                                 (Tonnes)    (Tonnes/Hectare)

Andaman and Nicobar Islands                 
Arhar/Tur                   
 1.NORTH AND MIDDLE ANDAMAN  
         2013-14    Rabi        1   3   3.00
     2014-15    Rabi        13.9    14  0.99
     2015-16    Rabi        0.5 0   0.60
     2016-17    Rabi        6.5 0   0.05
 2.SOUTH ANDAMANS    
         2013-14    Rabi        0.5 0   0.40
     2014-15    Rabi        1   0   0.40
     2015-16    Rabi        0.5 0   0.40

Python

import pandas as pd
import numpy as np
data1 = pd.read_excel('file:///C:/Users/3004/Desktop/AP.xls')
data2 = pd.read_excel('file:///C:/Users/3004/Desktop/States.xls')
result = pd.merge(data1,data2[['State/Crop/District','Year','Area (Hectare)','Production (Tonnes)'
                               ,'Yield (Tonnes/Hectare)',on='State/Crop/District',how='inner']])

我也试过了

vec<-c('Arhar/Tur','Wheat')
for (i in 1:length(vec)) 
  {if (AP$`State/Crop/District`==vec && AP$`State/Crop/District`==States$`State/Crop/District`)
  {rbind(AP$Year==2016-17,States$Year==2017-18)}}

Tags: 文件数据作物cropexcelyear地区pd
1条回答
网友
1楼 · 发布于 2024-06-16 13:05:02

您想要的是pd.concat而不是pd.merge

  • pd.concat([data1, data2])提供类似于SQL联合的结果
  • data1.merge(data2, how='left')给出一个类似于SQL左连接的结果

阅读pandas doc了解更多信息

相关问题 更多 >