2017-02-14 5 views
2

저는 Python을 처음 사용하고 그것에 익숙해지기 위해 몇 가지 작업을 시도했습니다.pd.series 형식의 열에서 문자열 분할 python

나는이 일을하는 동안 여기에 갇혀있다.

나는 내가 '_'나는 이후 수를 얻을해야 'ID'열에서이다 필요한 것은

data = pandas.read_csv("data.csv") 
data.head() 

    user rating  id 
0  1  3.5 1_1193 
1  1  3.5 1_661 
2  1  3.5 1_914 
3  1  3.5 1_3408 
4  1  3.5 1_2355 

사용하여 파이썬 수입 .CSV 형식의 데이터가 있습니다. 내가하고 시도 무엇

은 다음과 같습니다

나에게 오류 준
data.id.split('_') 

: " 'DataFrame'객체 '분할'에는 속성이 없습니다"나는대로 'ID'열을했다, 따라서

을 np.array stackoverflow 일부 솔루션에서 읽은 후.

["['1", 
"1193','1", 
"661','1", 
"914',..., '6040", 
"161','6040", 
"2725','6040", 
"1784']"] 
s2.split('_')[1] 

준 :

s1 = data.id.values 
s2 = np.array2string(s1, separator=',',suppress_small=True) 
s2.split('_') 

이 같이 나에게 출력을 제공

"1193','1" 

나는 "_"후 문자열을 얻기 위해 무엇을해야합니까?

답변

2

당신은 str[1]에 의해 두 번째 목록을 선택하여 벡터화 str.split 필요 - 또한 당신은 docs 확인할 수 있습니다

data['a'] = data.id.str.split('_').str[1] 
print (data) 
    user rating  id  a 
0  1  3.5 1_1193 1193 
1  1  3.5 1_661 661 
2  1  3.5 1_914 914 
3  1  3.5 1_3408 3408 
4  1  3.5 1_2355 2355 

print (data.dtypes) 
user  int64 
rating float64 
id   object 
a   object <- format is object (obviously string) 
dtype: object 
새 값으로 id 열을 교체해야하는 경우도
#split and cast column to int 
data['a'] = data.id.str.split('_').str[1].astype(int) 
print (data) 
    user rating  id  a 
0  1  3.5 1_1193 1193 
1  1  3.5 1_661 661 
2  1  3.5 1_914 914 
3  1  3.5 1_3408 3408 
4  1  3.5 1_2355 2355 

print (data.dtypes) 
user  int64 
rating float64 
id   object 
a   int32 <- format is int 
dtype: object 

:

data.id = data.id.str.split('_').str[1] 
print (data) 
    user rating id 
0  1  3.5 1193 
1  1  3.5 661 
2  1  3.5 914 
3  1  3.5 3408 
4  1  3.5 2355 

data.id = data.id.str.split('_').str.get(1) 
print (data) 
    user rating id 
0  1  3.5 1193 
1  1  3.5 661 
2  1  3.5 914 
3  1  3.5 3408 
4  1  3.5 2355 
+0

내 또는 다른 답변이 도움이되었다 경우, 잊지 마세요 [동의] (http://meta.stackexchange.com/a/5235/295067) 그것. 감사. – jezrael

+0

안녕하세요. 이것은 나를 위해 일했다. :) –

+0

대답을 승인 된 것으로 표시하려면 답변 옆에있는 체크 표시를 클릭하여 회색으로 표시된 것을 채 웁니다. 감사합니다. 감사합니다.감사합니다. – jezrael

1

몇 더 많은 옵션 ...


str.extract

df.id.str.extract('.*_(.*)', expand=False) 


str.replace

df.id.str.replace('.*_', '') 

모두 항복

0 1193 
1  661 
2  914 
3 3408 
4 2355 
Name: id, dtype: object 
+0

. 그것은 나를 위해 일했습니다. –