![](/img/trans.png)
[英]Pandas: adding a column to a dataframe from dictionary, when keys are the indices of the dataframe
[英]Adding a new column in pandas dataframe from another dataframe with differing indices
假設您的數據幀的大小相同,您可以將RESULT_df['RESULT'].values
分配給您的原始數據幀。 這樣,您就不必擔心索引問題。
# pre 0.24
feature_file_df['RESULT'] = RESULT_df['RESULT'].values
# >= 0.24
feature_file_df['RESULT'] = RESULT_df['RESULT'].to_numpy()
最少的代碼示例
df
A B
0 -1.202564 2.786483
1 0.180380 0.259736
2 -0.295206 1.175316
3 1.683482 0.927719
4 -0.199904 1.077655
df2
C
11 -0.140670
12 1.496007
13 0.263425
14 -0.557958
15 -0.018375
讓我們先嘗試直接賦值。
df['C'] = df2['C']
df
A B C
0 -1.202564 2.786483 NaN
1 0.180380 0.259736 NaN
2 -0.295206 1.175316 NaN
3 1.683482 0.927719 NaN
4 -0.199904 1.077655 NaN
現在,分配由.values
返回的數組(或.to_numpy()
對於 >0.24 版本的.to_numpy()
)。 .values
返回一個沒有索引的numpy
數組。
df2['C'].values
array([-0.141, 1.496, 0.263, -0.558, -0.018])
df['C'] = df2['C'].values
df
A B C
0 -1.202564 2.786483 -0.140670
1 0.180380 0.259736 1.496007
2 -0.295206 1.175316 0.263425
3 1.683482 0.927719 -0.557958
4 -0.199904 1.077655 -0.018375
您還可以調用set_axis()
來更改數據框/列的索引。 因此,如果長度相同,則使用set_axis()
,您可以強制一個 dataframe 的索引與另一個 dataframe 的索引相同。
df1['A'] = df2['A'].set_axis(df1.index)
如果您收到SettingWithCopyWarning
,然后要使其靜音,您可以通過調用join()
或assign()
創建一個副本。
df1 = df1.join(df2['A'].set_axis(df1.index))
# or
df1 = df1.assign(new_col = df2['A'].set_axis(df1.index))
如果你想從另一個 dataframe添加多個列, set_axis()
特別有用。你可以在新的 dataframe 上調用它之后再調用join()
。
df1 = df1.join(df2[['A', 'B', 'C']].set_axis(df1.index))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.