2015-09-12 119 views
1

我試圖通過分成兩列來爲每列創建一個新列。 df是一個數據框大熊貓...Python Pandas在循環中創建新列

columns = list(df.columns.values) 
for column_1 in columns: 
    for column_2 in columns:   
     new_column = '-'.join([column_1,column_2]) 
     df[new_column] = df[column_1]/df[column_2] 

得到一個錯誤:NotImplementedError:操作 '/' 不是布爾實施dtypes

任何想法,將感激?

+0

其中一列是布爾值。檢查df.dytpes,並省略非數字的列。 –

+0

謝謝......我假設布爾將評估爲0或1.顯然它不。 – cah

+0

我會嘗試將兩列轉換爲浮點,並捕獲嘗試轉換中的任何錯誤。如果Python可以投入浮動,那麼繼續進行分區可能是公平的遊戲。這也可以防止任何整數除法怪異。 – LondonRob

回答

1

就像Brian說的那樣,你肯定試圖劃分非數字列。這裏有一個劃分兩列以創建第三列的工作示例:

name = ['bob','sam','joe'] 
age = [25,32,50] 
wage = [50000, 75000, 32000] 

people = {} 
for i in range(0,3): 
    people[i] = {'name':name[i], 'age':age[i],'wage':wage[i]} 

# you should now have a data frame where each row is a person 
# you have one string column (name), and two numerics (age and wage)   
df = pd.DataFrame(people).transpose() 

df['wage_per_year'] = df['wage']/df['age'] 

print df