Pandas pd.merge "TypeError : 문자열 인덱스는 str이 아닌 정수 여야합니다."

5tanczak

이 간단한 문제를 광범위하게 조사했지만 답을 찾을 수 없습니다. pd.merge"JN"이라는 공통 열을 기반으로 pandas를 사용하여 두 파일을 병합하려고합니다 . 내 'joined'( os.path.join) 파일 이름을 데이터 프레임 / csv 파일 대신 문자열로 취급하고 있다고 생각 합니다. pd.merge함수를 호출 한 후 "문자열 인덱스는 str이 아닌 정수 여야합니다"라는 오류 메시지가 표시됩니다.

import pandas as pd
import os

path = r"C:/Users/St/Documents/House/m2"

dirs = os.listdir(path)

for file in dirs:
    if file.endswith("J.csv"):
        J = file
        if len(J) is 12: #some filenames are 12 chars others 11
            jroot = J[:7]
        else:
            jroot = J[:6]

for file in dirs:
    if file.endswith("2.csv"):
        W = file
        if len(W) is 12:
            root2 = W[:7]
        else:
            root2 = W[:6]

JJ = os.path.join(path, J)
WW = os.path.join(path, W)

if jroot == root2:          # if the first 7 (or 6) characters match, then merge
    JW = pd.merge(JJ, WW, on="JN")

위의 pd.merge 함수 호출과 관련하여이 오류가 발생합니다.

TypeError: string indices must be integers, not str

내 파일 이름 문자열을 실제 파일 또는 데이터 프레임으로 읽는 방법이 궁금합니다. JJ 및 WW는 인쇄시 전체 경로와 동일합니다. 나는 이러한 '파일 이름'데이터 프레임을 사용하려고 시도했지만 pd.DataFrame그렇게 할 수 없었습니다.

필립 클라우드

merge두 개의 문자열을 사용할 수 없습니다 . 나는 당신이 os.path.join반환 하는 것에 대해 혼란스러워하는 것 같습니다 . 문자열을 반환합니다. 당신은 실제로에서 읽을 필요 DataFrame라는 이름의 파일에서의 JJ하고 WW, 다음을 수행하십시오 merge.

다음은 2 DataFrames 를 작성 하고 다시 읽은 read_csv다음 열에 병합 하는 전체 예제입니다 group.

In [49]: df1 = DataFrame(randn(10, 1), columns=['a'])

In [50]: df1['group'] = np.random.choice(['b', 'c'], size=len(df1))

In [51]: df2 = DataFrame(randn(10, 1), columns=['b'])

In [52]: df2['group'] = np.random.choice(['b', 'c'], size=len(df1))

In [53]: df1.to_csv('df1.csv', index=False)

In [54]: cat df1.csv
a,group
-1.590035935931282,b
0.5496398501891229,c
-0.6484689548035797,b
0.19162302248253205,b
-0.9852064283582675,c
0.5975155551821989,b
0.29443634291217047,b
-0.7929994157215382,b
-1.9546460886048795,b
0.19195457928475546,c

In [55]: df2.to_csv('df2.csv', index=False)

In [56]: cat df2.csv
b,group
-1.2874060006117918,c
1.1037959548210117,b
0.47172389260467507,c
0.12802538607490285,c
-0.8753708425917293,b
-0.09187827793091947,b
1.140204215271196,c
0.4862940170888638,b
-1.1080430563137758,b
-1.3698112665693232,c

In [57]: df1_csv = read_csv('df1.csv', index_col=None)

In [58]: df2_csv = read_csv('df2.csv', index_col=None)

In [59]: df1_csv
Out[59]:
       a group
0 -1.590     b
1  0.550     c
2 -0.648     b
3  0.192     b
4 -0.985     c
5  0.598     b
6  0.294     b
7 -0.793     b
8 -1.955     b
9  0.192     c

In [60]: df2_csv
Out[60]:
       b group
0 -1.287     c
1  1.104     b
2  0.472     c
3  0.128     c
4 -0.875     b
5 -0.092     b
6  1.140     c
7  0.486     b
8 -1.108     b
9 -1.370     c

In [61]: df3 = pd.merge(df1_csv, df2_csv, on='group')

In [62]: df3
Out[62]:
        a group      b
0  -1.590     b  1.104
1  -1.590     b -0.875
2  -1.590     b -0.092
3  -1.590     b  0.486
4  -1.590     b -1.108
5  -0.648     b  1.104
6  -0.648     b -0.875
7  -0.648     b -0.092
8  -0.648     b  0.486
9  -0.648     b -1.108
10  0.192     b  1.104
11  0.192     b -0.875
12  0.192     b -0.092
13  0.192     b  0.486
14  0.192     b -1.108
15  0.598     b  1.104
16  0.598     b -0.875
17  0.598     b -0.092
18  0.598     b  0.486
19  0.598     b -1.108
20  0.294     b  1.104
21  0.294     b -0.875
22  0.294     b -0.092
23  0.294     b  0.486
24  0.294     b -1.108
25 -0.793     b  1.104
26 -0.793     b -0.875
27 -0.793     b -0.092
28 -0.793     b  0.486
29 -0.793     b -1.108
30 -1.955     b  1.104
31 -1.955     b -0.875
32 -1.955     b -0.092
33 -1.955     b  0.486
34 -1.955     b -1.108
35  0.550     c -1.287
36  0.550     c  0.472
37  0.550     c  0.128
38  0.550     c  1.140
39  0.550     c -1.370
40 -0.985     c -1.287
41 -0.985     c  0.472
42 -0.985     c  0.128
43 -0.985     c  1.140
44 -0.985     c -1.370
45  0.192     c -1.287
46  0.192     c  0.472
47  0.192     c  0.128
48  0.192     c  1.140
49  0.192     c -1.370

다른 몇 가지 :

is객체가 같은지 비교 하는 사용하지 말고 ==. 작은 정수의 경우에만 안정적으로 작동하며 CPython의 구현 세부 사항이므로 의존해서는 안됩니다.

로 파일 이름을 확인하는 대신 str.endswith먼저 globbing하여 원하는 내용을 반복하십시오.

import glob

for f in glob.glob(os.path.join(path, '*J.csv')):
    if len(f) == 12:
        # do all the thingz!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MongoDB에서 'GET'메서드 읽기, TypeError : 문자열 인덱스는 str이 아닌 정수 여야합니다.

분류에서Dev

pd.merge ()의 키 오류

분류에서Dev

교차 검사-pandas 데이터 프레임 통합 (pd.concat, pd.merge는이 경우 작동하지 않는 것 같습니다)

분류에서Dev

Pandas pd.isnull () 함수

분류에서Dev

pd.merge를 사용하여 pd.concat 복제

분류에서Dev

pd.merge_asof with multiple matches per time period?

분류에서Dev

Pandas Merge with interpolation

분류에서Dev

Pandas merge with unique matches

분류에서Dev

Merge misaligned pandas dataframes

분류에서Dev

pandas pd.DataFrame.diff (axis = 1) NotImplementationError

분류에서Dev

Pandas : PD 컷 후 Groupby 반환 오류

분류에서Dev

Pandas merge conflict rows by counts?

분류에서Dev

Pandas DataFrame.merge MemoryError

분류에서Dev

pd.merge를 사용할 때 NA 채우기

분류에서Dev

SQL에서 pd.merge의 결과를 복제합니까?

분류에서Dev

pd.merge. 오류 : ValueError : 잘못된 번호

분류에서Dev

pd.concat ()과 pd.merge ()의 차이점과 출력이 잘못된 이유는 무엇입니까?

분류에서Dev

Pandas Merge Vlookup, KeyError : "[ 'Value'] not in index"

분류에서Dev

Pandas Group 제작 : merge_asof

분류에서Dev

pd.merge ()로 두 개 이상의 데이터 프레임 병합

분류에서Dev

pd.merge "TypeError : 문자열 인덱스는 정수 여야합니다."

분류에서Dev

Pandas pd.read_html () 함수에서 'HTTP 오류 403 : 금지됨'

분류에서Dev

벡터화 된 Pandas pd. 타임 스탬프 작업

분류에서Dev

벡터화 된 Pandas pd. 타임 스탬프 작업

분류에서Dev

Pandas의 특정 조건에 대한 pd.eval ()

분류에서Dev

Pandas pd.to_dict에서 빈 키 항목 제거

분류에서Dev

pandas 0.17.0에서 1.1.2로 pd.ewma 마이그레이션

분류에서Dev

Pandas Dataframe pd.concat 후에 NaN이 표시됩니다.

분류에서Dev

Pandas.merge에서 '_merge'열을 삭제하는 방법

Related 관련 기사

  1. 1

    MongoDB에서 'GET'메서드 읽기, TypeError : 문자열 인덱스는 str이 아닌 정수 여야합니다.

  2. 2

    pd.merge ()의 키 오류

  3. 3

    교차 검사-pandas 데이터 프레임 통합 (pd.concat, pd.merge는이 경우 작동하지 않는 것 같습니다)

  4. 4

    Pandas pd.isnull () 함수

  5. 5

    pd.merge를 사용하여 pd.concat 복제

  6. 6

    pd.merge_asof with multiple matches per time period?

  7. 7

    Pandas Merge with interpolation

  8. 8

    Pandas merge with unique matches

  9. 9

    Merge misaligned pandas dataframes

  10. 10

    pandas pd.DataFrame.diff (axis = 1) NotImplementationError

  11. 11

    Pandas : PD 컷 후 Groupby 반환 오류

  12. 12

    Pandas merge conflict rows by counts?

  13. 13

    Pandas DataFrame.merge MemoryError

  14. 14

    pd.merge를 사용할 때 NA 채우기

  15. 15

    SQL에서 pd.merge의 결과를 복제합니까?

  16. 16

    pd.merge. 오류 : ValueError : 잘못된 번호

  17. 17

    pd.concat ()과 pd.merge ()의 차이점과 출력이 잘못된 이유는 무엇입니까?

  18. 18

    Pandas Merge Vlookup, KeyError : "[ 'Value'] not in index"

  19. 19

    Pandas Group 제작 : merge_asof

  20. 20

    pd.merge ()로 두 개 이상의 데이터 프레임 병합

  21. 21

    pd.merge "TypeError : 문자열 인덱스는 정수 여야합니다."

  22. 22

    Pandas pd.read_html () 함수에서 'HTTP 오류 403 : 금지됨'

  23. 23

    벡터화 된 Pandas pd. 타임 스탬프 작업

  24. 24

    벡터화 된 Pandas pd. 타임 스탬프 작업

  25. 25

    Pandas의 특정 조건에 대한 pd.eval ()

  26. 26

    Pandas pd.to_dict에서 빈 키 항목 제거

  27. 27

    pandas 0.17.0에서 1.1.2로 pd.ewma 마이그레이션

  28. 28

    Pandas Dataframe pd.concat 후에 NaN이 표시됩니다.

  29. 29

    Pandas.merge에서 '_merge'열을 삭제하는 방법

뜨겁다태그

보관