簡體   English   中英

從另一個具有不同索引的 dataframe 在 pandas dataframe 添加新列

[英]Adding a new column in pandas dataframe from another dataframe with differing indices

這是我原來的 dataframe。

df1

這是我的第二個 dataframe,其中包含一列。

DF2

我想在最后添加第二個dataframe的列到原來的dataframe。 兩個數據幀的索引不同。 我確實喜歡這個。

df1['RESULT'] = df2['RESULT']

它不會返回錯誤並添加該列,但所有值都是 NaN。 如何添加這些列及其值?

假設您的數據幀的大小相同,您可以將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM