[英]How to update the empty dataframe values with values from another dataframe(Pandas)?
[英]Update pandas dataframe with values from another dataframe
假設一個數據框的任何列中的值都可以更改,給定另一個包含舊值,新值和它所屬列的數據框,如何使用有關更改的信息更新數據框? 例如:
>>> my_df
x y z
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
my_df_2
包含有關更改的值及其列的信息:
>>> my_df_2
changed_col old_value new_value
0 x 2 10
1 z 9 20
2 x 1 12
3 y 4 23
如何使用my_df_2
信息更新my_df
,以使my_df
現在變為:
>>> my_df
x y z
0 12 2 5
1 10 3 20
2 8 7 2
3 3 23 7
4 6 7 7
您可以為更改創建字典,如下所示:
d = {i: dict(zip(j['old_value'], j['new_value'])) for i, j in my_df_2.groupby('changed_col')}
d
Out: {'x': {1: 12, 2: 10}, 'y': {4: 23}, 'z': {9: 20}}
然后在DataFrame.replace中使用它:
my_df.replace(d)
Out:
x y z
0 12 2 5
1 10 3 20
2 8 7 2
3 3 23 7
4 6 7 7
您可以使用更新方法。 參見http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.update.html
例:
old_df = pd.DataFrame({"a":np.arange(5), "b": np.arange(4,9)})
+----+-----+-----+
| | a | b |
|----+-----+-----|
| 0 | 0 | 4 |
| 1 | 1 | 5 |
| 2 | 2 | 6 |
| 3 | 3 | 7 |
| 4 | 4 | 8 |
+----+-----+-----+
new_df = pd.DataFrame({"a":np.arange(7,8), "b": np.arange(10,11)})
+----+-----+-----+
| | a | b |
|----+-----+-----|
| 0 | 7 | 10 |
+----+-----+-----+
old_df.update(new_df)
+----+-----+-----+
| | a | b |
|----+-----+-----|
| 0 | 7 | 10 | #Changed row
| 1 | 1 | 5 |
| 2 | 2 | 6 |
| 3 | 3 | 7 |
| 4 | 4 | 8 |
+----+-----+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.