我有一個資料框
employees = [('Jack', 34, 'Sydney' ) ,
('Riti', 31, 'Delhi' ) ,
('Aadi', 16, 'London') ,
('Mark', 18, 'Delhi' )]
dataFrame = pd.DataFrame( employees,
columns=['Name', 'Age', 'City'])
我想在這個 DataFrame 中附加一些新列。我這樣做了:
data = ['Height', 'Weight', 'Eyecolor']
duduFrame = pd.DataFrame(columns=data)
這導致:
Name Age City Height Weight Eyecolor
0 Jack 34.0 Sydney NaN NaN NaN
1 Riti 31.0 Delhi NaN NaN NaN
2 Aadi 16.0 London NaN NaN NaN
3 Mark 18.0 Delhi NaN NaN NaN
到現在為止還挺好。
現在我有關于“Riti”的身高、體重和眼睛顏色的新資料:
Riti_data = [(172, 74, 'Brown')]
這是我想補充的dataFrame。
我試過了
dataFrame.loc['Riti', [duduFrame]] = Riti_data
但我得到了錯誤
ValueError: Buffer has wrong number of dimensions (expected 1, got 3)
我究竟做錯了什么?
uj5u.com熱心網友回復:
試試這個 :
dataFrame.loc[dataFrame['Name']=='Riti', ['Height','Weight','Eyecolor']] = Riti_data
我認為您的錯誤不是指定您所做的列:duduFrame而不是data包含您要添加新值的名稱列
uj5u.com熱心網友回復:
你可以這樣做 :
df = pd.concat([dataFrame, duduFrame])
df = df.set_index('Name')
df.loc['Riti',data] = [172,74,'Brown']
導致 :
Age City Height Weight Eyecolor
Name
Jack 34.0 Sydney NaN NaN NaN
Riti 31.0 Delhi 172 74 Brown
Aadi 16.0 London NaN NaN NaN
Mark 18.0 Delhi NaN NaN NaN
uj5u.com熱心網友回復:
Pandas 有一個pd.concat函式,其作用是連接資料幀,垂直連接(軸 = 0),或者在你的情況下水平連接(軸 = 1)。
但是,我個人認為水平合并更像是一個pd.merge用例,這使您可以更靈活地了解您希望如何進行合并。
在您的情況下,您想匹配Name列,對嗎?
所以我會分兩步完成:
Name使用列及其各自的資料構建兩個資料框- 合并兩個資料框
pd.merge(df1, df2, on = 'Name', how = 'outer')
該how = outer引數確保您不會丟失 df1 或 df2 中的任何資料,以防某些Name資料僅在兩個資料幀之一中具有資料。這將使您更容易捕捉資料錯誤,并使您更多地考慮 SQL JOIN,這是一種必要的思維方式:)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467789.html
下一篇:如何洗掉缺少值的列和行?
