>source

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=',')

원하는 결과를 기대하지만 실제 결과는 모든 데이터를 결합하는 것입니다.


  • 답변 # 1

    내 의견에서 언급했듯이 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을 참조하십시오

    p
    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:]) 입니다 . 동일한 작업을 수행하는 더 복잡한 방법이 있지만 이것이 가장 간단합니다.

  • 답변 # 2

    팬더를 사용하지 않고. 각 파일의 행을 읽으십시오. 한 파일의 데이터에서 다른 파일로 열 줄을 추가하십시오. 결과를 다른 파일에 씁니다.

    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)
    
    
    <시간>

    두 파일의 열 수가 동일하다고 가정합니다.

관련 자료

  • 이전 javascript - 숫자를 단어로 변환 할 때 센트를 추가하는 방법
  • 다음 rspec - "vanilla"Ruby dotenv가 env 이외의 파일을 선택합니까?