我對如何在熊貓中將一列添加到另一列感到困惑
這是我正在嘗試做的事情:
from pandas import DataFrame
df1 = DataFrame({'a':[1,2], 'b':[3,4]})
concat((df1['a'], df1['b'].rename({'b':'a'}))).reset_index(drop=True)
哪個確實回傳我想要的:具有我的 4 個值的系列。我不明白的是:為什么我不能將它分配給“a”列?
>>> from pandas import DataFrame
>>> df1 = DataFrame({'a':[1,2], 'b':[3,4]})
>>> concat((df1['a'], df1['b'].rename({'b':'a'}))).reset_index(drop=True)
0 1
1 2
2 3
3 4
dtype: int64
>>> df1['a'] = concat((df1['a'], df1['b'].rename({'b':'a'}))).reset_index(drop=True)
>>> df1
a b
0 1 3
1 2 4
順便說一句,有什么辦法可以讓它更具可讀性嗎?我對它應該如何作業感到困惑......請注意,之后我不需要列'b'。
謝謝你的幫助 :)
山姆
uj5u.com熱心網友回復:
pandas series不要有專欄。
如果你想按 Dataframe 使用列,請df[['a']]改用df['a']
&你想改變列的名稱需要axis或columns
pd.concat([df1[['a']], df1[['b']].rename(columns={'b':'a'})]).reset_index(drop=True)
輸出
a
0 1
1 2
2 3
3 4
如果我使用您的代碼創建您的輸出,則代碼如上。但我不會使用上面的代碼。
我將使用以下代碼:
pd.concat([df1['a'], df1['b']]).to_frame('a').reset_index(drop='True')
uj5u.com熱心網友回復:
分配時,您不會創建新的行/索引(除了單個值,這里不是這種情況)。
pd.concat((df1['a'], df1['b'].rename({'b':'a'}))).reset_index(drop=True)
給你:
0 1
1 2
2 3
3 4
dtype: int64
Pandas 在分配之前對齊索引。因此,只使用與現有 df 索引匹配的索引,這里是 0 和 1,其余的被丟棄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533415.html
標籤:Python熊猫数据框
上一篇:根據過濾輸入選擇創建新列的函式
