2016-10-20 2 views
1

그래서 내가 열 C의 모든 값으로 추가 할 수있는 구문 무엇 {c: 2} 같은 다른 키 쌍을 감안할 때 다음추가는

a b c 
0 AB 10 {a: 2, b: 1} 
1 AB 1 {a: 3, b: 2} 
2 AC 2 {a: 4, b: 3} 
... 
400 BC 4 {a: 1, b: 4} 

처럼 보이는 DataFrame이 값에 dataframe에 저장된 사전에?

a b c 
0 AB 10 {a: 2, b: 1, c: 2} 
1 AB 1 {a: 3, b: 2, c: 2} 
2 AC 2 {a: 4, b: 3, c: 2} 
... 
400 BC 4 {a: 1, b: 4, c: 2} 
내가 df['C'] +=, and df['C'].append()을 시도했습니다

df.C.append, 그러나 어느 쪽도 일 것으로 보인다.

+0

'안양 [ 'C를'] 업데이 트를 (C 2를 =)' –

+0

이는 형식 오류를 반환 사전. – SharpObject

+1

'df [ 'c'] = df.c.apply (lambda x : dict (x, c = 2))'? 사전의 순서가 변경 될 수 있습니다. – Abdou

답변

2

여러 개의 키에 사용할 수있는 사전의 다른 사전으로 업데이트하는 일반적인 방법입니다.

시험 dataframe :

>>> x = pd.Series([{'a':2,'b':1}]) 
>>> df = pd.DataFrame(x, columns=['c']) 
>>> df 
        c 
0 {'b': 1, 'a': 2} 

단지 apply 람다 함수 :

>>> update_dict = {'c': 2} 
>>> df['c'].apply(lambda x: {**x, **update_dict}) 
0 {'b': 1, 'a': 2, 'c': 2} 
Name: c, dtype: object 

참고 :이 How to merge two Python dictionaries in a single expression?에 대답 한 Python3 업데이트 사전 구문을 이용한다. Python2의 경우 상단 답변에 merge_two_dicts 함수를 사용할 수 있습니다. 당신이 쓰는 그 대답에서 함수 정의를 사용할 수 있습니다. 'C'는 아직 존재하지 않기 때문에

df['c'].apply(lambda x: merge_two_dicts(x, update_dict)) 
+0

흠, 이건 나에게주고있다 SyntaxError : ** x 부분에 유효하지 않은 구문 – SharpObject

+0

Python2를 사용하고 있습니까? – brianpck

+0

그래, 나는 메인 포스트에서 언급 한 것을 잊어 버렸다. – SharpObject

관련 문제