Сравнение двух кадров данных panda и написание новых кадров данных, если значение строки является общим для обоих dfs - PullRequest
0 голосов
/ 06 ноября 2018

Прежде всего, я собираюсь объяснить всю проблему, и, если есть лучший способ сделать это без панд, пожалуйста, скажите. Я только что попробовал несколько способов, и я чувствую, что панды, вероятно, лучший путь.

У меня есть два текстовых файла. Каждый текстовый файл выглядит примерно так:

Sometextinbothfiles    UniqueText    SomeTextThatCouldbeCommon    Unique Text

В UniqueText есть еще столбцы, но это дает общее представление о макете. Также есть некоторая информация заголовка, но ее легко удалить, игнорируя первые 22 строки в pandas. Столбец с SomeTextThatCouldbeCommon всегда находится в одном и том же месте, и именно это я и хочу посмотреть. Это имя файла.

В настоящее время я просто извлекаю каждый текстовый файл и разделяю их на панд, используя

Data = open("data.star", "r")
Datapd = pd.read_csv(Data, sep=r"\s+", skiprows=range(0,23), header=None)

Поэтому я хочу сравнить SomeTextThatCouldbeCommon в каждой строке текстового файла с тем же SomeTextThatCouldbeCommon в КАЖДОЙ строке другого текстового файла. Если есть совпадение, я хочу записать всю эту строку в новый массив данных / текстовый файл / массив. Затем я хочу сделать то же самое в обратном порядке. В итоге у меня есть два файла, которые ссылаются на одни и те же файлы, но в каждом файле есть уникальные данные об этих данных.

Надеюсь, я все объяснил. Пожалуйста, помогите мне изо всех сил, чтобы выяснить, как это сделать.

1 Ответ

0 голосов
/ 06 ноября 2018

Привет, приятель, здесь вы можете найти простой пример для решения вашей проблемы, надеюсь, он сработает для вас:

два примера фрейма данных:

df1 = pd.DataFrame({
"Date" : [2013-11-24, 2013-11-24, 2013-11-24, 2013-11-24],
"Fruit" : ['Banana', 'Orange', 'Apple', 'Celery'], 
"Num" : [22.1, 8.6, 7.6, 10.2],
"Color" : ['Yellow', 'Orange', 'Green', 'Green']
})

df2 = pd.DataFrame({
"Date" : [2013-11-25, 2013-11-24, 2013-11-24, 2018-11-24],
"Fruit" : ['Banana', 'Cherry', 'Mango', 'Celery'], 
"Num" : [22.1, 8.6, 7.6, 10.2],
"Color" : ['Yellow', 'Green', 'Yellow', 'Green']
})

mask = (df1 == df2)
df1.where(mask)

в случае совпадения, в результате которого вы получите значения «NaN».

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