簡體   English   中英

從另一個數據幀填充數據幀的列

[英]Fill column of a dataframe from another dataframe

我正在嘗試根據條件從另一個數據幀填充數據幀的一列。 假設我的第一個數據幀是 df1,第二個被命名為 df2。

# df1 is described as bellow :
+------+------+
| Col1 | Col2 |
+------+------+
|   A  |  1   |
|   B  |  2   |
|   C  |  3   |
|   A  |  1   |
+------+------+

# df2 is described as bellow :
+------+------+
| Col1 | Col2 |
+------+------+
|   A  |  NaN |
|   B  |  NaN |
|   D  |  NaN |
+------+------+

Col1 的每個不同值都有一個 id 號(在 Col2 中),所以我想要的是填充 df2.Col2 中的 NaN 值,其中 df2.Col1==df1.Col1 。 這樣我的第二個數據框將如下所示:

# df2 :
+------+------+
| Col1 | Col2 |
+------+------+
|   A  |  1   |
|   B  |  2   |
|   D  |  NaN |
+------+------+

我正在使用 Python 2.7

drop_duplicatesset_indexcombine_first

df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()

如果只需要在id列中檢查欺騙:

df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()

這是過濾器df1.Col1 == df2.Col1的解決方案

df2['Col2'] = df1[df1.Col1 == df2.Col1]['Col2']

使用loc更好(但從我的角度來看不太清楚)

df2['Col2'] = df1.loc[df1.Col1 == df2.Col2, 'Col2']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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