Объединение строк из одного Excel в другое в определенном месте - PullRequest
0 голосов
/ 03 июня 2019

У меня есть 2 файла Excel со столбцами с именами «Штат / Урожай / Район», «Год», «Сезон», «Площадь (га)», «Производство (Тонны)», «Урожай (Тонны / га»).) '

В одном файле Excel у меня есть данные по разным штатам и по этим штатам по разным культурам и по этим культурам по разным районам за 4 года.

В другом файле также у меня естьДанные такого же типа, но только за один год.

Я хочу вставить данные за этот один год во 2-й файл, а не лет для определенного района в 1-й файл.Я хочу добавить год 2017-18 после прошлого года в первый файл для определенного района.

Ниже приведен пример данных, которые у меня есть в обоих файлах Excel.2-й файл содержит данные только за 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']])

Я тоже пробовал в R,

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)}}

1 Ответ

0 голосов
/ 03 июня 2019

То, что вы хотите, это pd.concat, а не pd.merge:

  • pd.concat([data1, data2]) дает результат, похожий на объединение SQL.
  • data1.merge(data2, how='left') дает результат, похожий на левое соединение SQL.

Для получения дополнительной информации прочитайте документ pandas .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...