Объединить 2 CSV-файла, используя Python с указанным количеством - PullRequest
0 голосов
/ 19 мая 2019

Я хочу объединить 2 файла данных CSV, но не все данные. например: a.csv + b.csv, где b.csv имеет 20 данных. Но я хочу взять только 10 данных из этого, а затем взять 11-20 данных. Или первые 10, а вторые 10

Затем вставьте первые 10 данных в a.csv, а вторые 10 данных тоже в a.csv Мой вопрос: как я могу взять только конкретные итоговые данные?

Вот мой код:

import pandas as pd

df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)

output=df1.append(df2)
output.to_csv("output.csv", sep=',')

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

Ответы [ 3 ]

0 голосов
/ 19 мая 2019
import pandas as pd
import numpy as np
# Creating two dataframes with data that overlap, so we don't want all of the 'b' data.
# We want to strip off '3,4,5' as they exist in 'a' as well
# ----------Creating the data frames----------
a = [1,2,3,4,5]
b = [3,4,5,6,7,8,9,10]

dfa = pd.DataFrame(a)
dfa.to_csv('one.csv', index=False)

dfb = pd.DataFrame(b)
dfb.to_csv('two.csv', index = False)
# ---------------------------------------------

# --------Reading through the dataframes-------
one = pd.read_csv('one.csv')
two = pd.read_csv('two.csv')
# ---------------------------------------------

# Stripping off the first 3 data of 'two' the list
output = one.append(two[3:])
output.to_csv("output.csv", sep=',', index=False)
# ---------------------------------------------

Надеюсь, это ответит на ваш вопрос.Важной частью для вас является output = one.append(two[3:]).Есть более сложные способы сделать то же самое, но это самый простой.

0 голосов
/ 19 мая 2019

Как уже упоминалось в моем комментарии, вы можете использовать nrows

import pandas as pd

df1 = pd.read_csv('testNegatif.csv')
df2 = pd.read_csv('trainNegatif.csv', nrows=10)

output=df1.append(df2)
output.to_csv("output.csv", sep=',')

См .: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html для дополнительных опций

0 голосов
/ 19 мая 2019

Без использования панд. Прочитайте строки каждого файла; добавить десять строк из данных одного файла в другой; записать результат в другой файл.

with open('a.csv') as f:
    data = f.readlines()
with open('b.csv') as f:
    bdata = f.readlines()

data.extend(bdata[:10])

with open('output.csv', 'w'):
    f.writelines(data)

Если файлы ОГРОМНЫЕ и вы не хотите читать все содержимое в память, используйте некоторые функции itertools.

import itertools
with open('a.csv') as a, open('b.csv') as b, open('output.csv', 'w') as out:
    first_ten = itertools.islice(b, 10)
    for line in itertools.chain(a, first_ten):
        out.write(line)

Предполагается, что оба файла имеют одинаковое количество столбцов.

...