Нахождение разных строк в двух отдельных файлах Excel в разных столбцах и их объединение - PullRequest
0 голосов
/ 16 октября 2019

Я совершенно новичок в этом, поэтому у меня нет кода для представления.

Мне нужна помощь с Python 3.x, предпочтительно пакет pandas.

У меня есть два отдельныхфайлы Excel. В первом файле Excel я хочу найти строки по значению в них, значение выглядит как K232999. Они расположены во втором столбце.

Затем я хочу использовать значение времени, связанное с этими именами, которое находится в первом столбце в формате dd/mm/yyyy hh:mm, и использовать его, чтобы найти строки во втором файле Excel и извлечь их. Значения времени во втором файле также находятся в первом столбце и имеют тот же формат.

Кроме того, также важен временной интервал:

Мне нужен интервал от 1.9.2019. 12:55 - 2.9.2019. 10:35 и 2.9.2019. 09:46 - 3.9.2019. 02:51 для K324645, а затем найти те же интервалы в другом файле Excel и объединитьони в отдельном Excel или где-то в памяти, так что я могу использовать их, или, предпочтительно, оба. Например:

Excel 1:

1.9.2019. 12:55 K324645
1.9.2019. 17:55 K324645
2.9.2019. 02:51 K324645
2.9.2019. 10:35 K324645

2.9.2019. 12:55 FGJFJKH
2.9.2019. 17:12 SAFFAFA
2.9.2019. 19:15 SGDFGDS

3.9.2019. 11:46 K324645
3.9.2019. 17:55 K324645
3.9.2019. 20:51 K324645

3.9.2019. 05:32 FDSJFJKH
3.9.2019. 10:12 SAFFAFA
3.9.2019. 17:12 SGDFGDS

Excel 2:

1.9.2019. 12:57 345,7
1.9.2019. 17:50 218,3
2.9.2019. 02:53 323,4
2.9.2019. 10:29 125,5

2.9.2019. 13:00 215,8
2.9.2019. 17:09 232,7
3.9.2019. 09:53 188.7
3.9.2019. 10:45 656.5

3.9.2019. 12:26 355,2
3.9.2019. 17:45 656.5
3.9.2019. 20:49 268.4

Окончательный результат:

1.9.2019. 12:55 K324645 345,7
1.9.2019. 17:55 K324645 218,3
2.9.2019. 02:51 K324645 323,4
2.9.2019. 10:35 K324645 125,5 

3.9.2019. 11:46 K324645 355,2
3.9.2019. 17:55 K324645 656,5
3.9.2019. 20:51 K324645 268,4

Обратите внимание, что датыразные в таблицах. Я должен извлечь значения из второго в течение первого периода.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Вы говорите, что вы совершенно новый, поэтому я не уверен, как далеко вы продвинулись с этим. Если вы импортировали оба файла в кадры данных, вам необходимо переименовать столбец DateTime в обоих кадрах данных в одно и то же имя. Тогда используйте внутреннее слияние.

df3 = pd.merge(df1, df2, on='DateTime', how='inner') # merge the dataframes
df3['DateTime'] = pd.to_datetime(df3['DateTime']) # convert column to date/time format  

На этом этапе я бы разделил кадр данных на две части. Один со временем между 9/9/2019 12:55 и 2/9/2019 10:35. Другой на время между 9/9/2019 09:46 и 3/9/2019 02:51. Затем объедините эти два вместе.

firstset = df3[(df3['DateTime'].astype(str) >= '2019-01-09 12:55:00') & (df3['DateTime'].astype(str) < '2019-02-09 10:35:01')]
secondset = df3[(df3['DateTime'].astype(str) >= '2019-02-09 09:46:00') & (df3['DateTime'].astype(str) < '2019-03-09 02:51:01')]  
final = pd.concat([firstset, secondset]).drop_duplicates()

Это должно выполнить то, что вы хотите. Это может быть не самый быстрый способ.

0 голосов
/ 16 октября 2019

Первое использование:

import pandas as pd

df1=pd.read_excel(file1)
df2=pd.read_excel(file2)

pd.to_datetime(df1['Time_Column_name'].str.strip(),format='%H:%M:%S')
pd.to_datetime(df2['Time_Column_name'].str.strip(),format='%H:%M:%S')

, затем объединить 2 кадра данных, используя:

pd.merge(df1,df2,how=inner)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...