Автоматизируйте процесс сравнения значений 2 CSV-файлов, если значения совпадают, считайте второй CSV-файл в DataFrame - PullRequest
0 голосов
/ 26 февраля 2019

Я импортировал Excel в массив данных.Это выглядит так:

enter image description here

Затем я использовал код для группировки этих данных в соответствии с 'tx_id' и создания отдельного csv с именем tx_id, котороедает мне такие данные (3e6737ae-c3af-4d19-a645-d17fc73dbb7c.csv).Это код:

for i, g in dframe.groupby('tx_id'):
     g.to_csv('{}.csv'.format(i.split('/')[0]), index=False)

Затем я создал отдельный dframe, содержащий только tx_id, а затем удалил дубликаты, используя этот код:

dframe1 = dframe1.drop_duplicates()

Теперь мой фрейм данных выглядит так:

enter image description here

Я преобразовал этот кадр данных в CSV.Теперь я хочу сравнить имена файла CSV (который является значением tx_id) с данными, присутствующими во вновь созданном CSV, и если имена совпадают, я хотел бы прочитать файл CSV (который является значением tx_id) вdataframe.Раньше я импортировал эти CSV-файлы вручную, но у меня большой набор данных, для меня не представляется возможным каждый раз читать данные и выполнять дальнейшие действия с ними.Сейчас я занимаюсь импортом файлов CSV по отдельности в фрейм данных.Я использую этот код:

df = pd.read_csv(' ae229a81-bb33-4cf1-ba2f-360fffb0d94b.csv')

Это дает мне такой результат:

enter image description here

Затем я использовал его для снятия иприменить value_counts с помощью этого кода:

df1 = df.groupby('rule_id')['request_id'].value_counts().unstack().fillna(0)

И конечный результат, который выглядит следующим образом:

enter image description here

Я хочуавтоматизировать этот процесс, и я не знаю как.Ребята, вы можете мне помочь?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете выполнить итерацию tx_id и добавить кадры данных к list:

import pandas as pd

dfs = []
for tx in dframe1['tx_id']:
    dfs.append(pd.read_csv('%s.csv' % tx))

Это работает, только если оно выполняется в том же каталоге, что и файлы csv.В противном случае:

import os
import pandas

dfs = []

for tx in dframe1['tx_id']:
    dfs.append(pd.read_csv(os.path.join('/path/to/csv/', '%s.csv' % tx)))

Отредактировано

Вместо непосредственного добавления фрейма данных, если вы хотите применить некоторые функции:

for tx in dframe1['tx_id']:
    df = pd.read_csv(os.path.join('/path/to/csv/', '%s.csv' % tx))
    dfs.append(df.groupby('rule_id')['request_id'].value_counts().unstack().fillna(0))

Теперь ваш dfs имеет все value_counts() результатов.Вы можете ссылаться на них, используя индексы.

Если вы хотите найти их, используя имя файла, используйте dict:

df_dict = dict()
for tx in dframe1['tx_id']:
    df = pd.read_csv(os.path.join('/path/to/csv/', '%s.csv' % tx))
    df_dict[tx] = df.groupby('rule_id')['request_id'].value_counts().unstack().fillna(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...