2014-08-28 29 views
9

Làm thế nào để chuyển đổi dataframe nàyTừ tuples đến nhiều cột trong gấu trúc

 
              location value      
0     (Richmond, Virginia, nan, USA) 100      
1    (New York City, New York, nan, USA) 200      

này:

 
    city   state  region country value 
0 Richmond  Virginia nan  USA  100 
1 New York City New York nan  USA  200 

Lưu ý rằng location cột trong dataframe đầu tiên chứa các bộ. Tôi muốn tạo bốn cột ra khỏi cột location.

Trả lời

8
new_col_list = ['city','state','regions','country'] 
for n,col in enumerate(new_col_list): 
    df[col] = df['location'].apply(lambda location: location[n]) 

df = df.drop('location',axis=1) 
4

Nếu bạn quay trở lại một loạt các sự (split) vị trí, bạn có thể hợp nhất (join-merge on index) kết quả DF trực tiếp với cột giá trị của bạn.

addr = ['city', 'state', 'region', 'country'] 
df[['value']].join(df.location.apply(lambda loc: Series(loc, index=addr))) 

    value   city  state region country 
0 100  Richmond Virginia  NaN  USA 
1 200 New York City New York  NaN  USA 
+0

Cảm ơn. Giải pháp của @ exp1orer đã hoạt động, vì vậy tôi không phải thử nghiệm của bạn. –

+0

Điều đó được thực hiện tốt đẹp! Nếu tôi không nhầm, nó chỉ hoạt động nếu 'df' có chỉ mục là' range (len (df)) ', đúng không? – exp1orer

+0

@ exp1orer Không hoàn toàn. 'join' là viết tắt của việc sáp nhập vào chỉ mục với cả hai khung, vì vậy các chỉ số chỉ cần nhất quán (mà nó sẽ ở đây khi việc áp dụng và lựa chọn col không ảnh hưởng đến nó). Tôi sẽ chỉnh sửa câu trả lời. – meloncholy

Các vấn đề liên quan