2014-01-19 3 views
0

의 내가 다음 DataFrame 있다고 가정 해 봅시다 : 나는 'A'와 (행당) 'B'의 튜플을 포함하는 새 열 'C'를 만들튜플 (또는 목록)을 사용하여 새 열을 만드는 방법은 무엇입니까?

d = pd.DataFrame({ 'a': [10,20,30], 'b': [1,2,3] }) 

    a b 
0 10 1 
1 20 2 
2 30 3 

. 이런 식으로 뭔가 :

a b  c 
0 10 1 (10,1) 
1 20 2 (20,2) 
2 30 3 (30,3) 

난 그냥 그것을 할 수 없습니다, 아무리 내가 무엇을하려고 (내가 axis=1apply을 시도하지하고 튜플,리스트, 시리즈 개체를 반환해야 .. 어느 쪽도했다).

DataFrame을 만들고 dtype을 'object'로 설정 한 다음 셀에 튜플을 넣을 수 있음을 알았습니다. apply으로 어떻게 처리합니까?

내가하려는 것은 가장 일반적인 것을 얻고 그 중 일부 데이터로 요약을 인쇄하는 것입니다 (데이터는 다른 열에서 나옵니다. 'd'와 'e'라고합시다)). 더 세련된 방법이 있습니까?

답변

3

당신은 zip를 사용하여 할 수있는 :

>>> df = pd.DataFrame({'a': [10,20,30], 'b': [1,2,3]}) 
>>> df["c"] = zip(df["a"], df["b"]) 
>>> df 
    a b  c 
0 10 1 (10, 1) 
1 20 2 (20, 2) 
2 30 3 (30, 3) 

[3 rows x 3 columns] 

하지만 일반적으로 열에서 튜플 퍼팅은 pandas 정말 그 시점에서 그것으로 다른 작업을 수행 할 수 없기 때문에 갈 수있는 잘못된 방법입니다. 당신이 ab의 독특한 조합을 계산 행의 관련 그룹과 뭔가를하려는 경우, 당신은 대신 groupby을 사용해야합니다

>>> df = pd.DataFrame({'a': [10,20,30,20,30], 'b': [1,2,3,2,1]}) 
>>> df 
    a b 
0 10 1 
1 20 2 
2 30 3 
3 20 2 
4 30 1 

[5 rows x 2 columns] 
>>> df_counts = df.groupby(["a", "b"]).size() 
>>> df_counts.sort(ascending=False) 
>>> df_counts 
a b 
20 2 2 
30 3 1 
    1 1 
10 1 1 
dtype: int64 

는 "그들에 대한 몇 가지 데이터 요약을 인쇄"아무 말도 너무 광범위 유용하다. 그러나 groupby을 사용하여 그룹에 대한 모든 종류의 요약 작업을 수행 할 수있다.

+0

고마워요! groupby를 몰랐습니다. 실제로 사용하는 것이 옳은 것처럼 보입니다. 시도해볼거야. –

관련 문제