當兩個資料幀的類別和位置匹配時,我想df2['VALUE']在 df1 的新列中填充值。df1['New']
什么時候
df1['category'] = df2['CATEGORY'] 和df1['location'] = df2['LOCATION']
將 的值填充df2['VALUE']到 df1 的新行中,以便使用df1['v1']我可以計算df1['calculatedfield'] = df1['v1']/df1['new']
df1
| 類別 | 地點 | 型別 | v1 |
|---|---|---|---|
| 一個 | 位置1 | 1 | 2 |
| 一個 | 位置1 | 2 | 4 |
| 一個 | 位置2 | 1 | 6 |
| 一個 | 位置2 | 2 | 8 |
| 乙 | 位置1 | 1 | 10 |
| 乙 | 位置1 | 2 | 12 |
| 乙 | 位置2 | 1 | 14 |
| 乙 | 位置2 | 2 | 16 |
df2
| 類別 | 地點 | 價值 |
|---|---|---|
| 一個 | 位置1 | 50 |
| 一個 | 位置2 | 30 |
| 乙 | 位置1 | 70 |
| 乙 | 位置2 | 90 |
輸出
| 類別 | 地點 | 型別 | v1 | 新的(df2['VALUE']) | 計算欄位(v1/新) |
|---|---|---|---|---|---|
| 一個 | 位置1 | 1 | 2 | 50 | 0.04 |
| 一個 | 位置1 | 2 | 4 | 50 | 0.08 |
| 一個 | 位置2 | 1 | 6 | 30 | 0.2 |
| 一個 | 位置2 | 2 | 8 | 30 | 0.27 |
| 乙 | 位置1 | 1 | 10 | 70 | 0.14 |
| 乙 | 位置1 | 2 | 12 | 70 | 0.17 |
| 乙 | 位置2 | 1 | 14 | 90 | 0.16 |
| 乙 | 位置2 | 2 | 16 | 90 | 0.18 |
df1行數多于df2,這就是為什么我沒有加入這兩個資料框的原因。無論. df2['new']_ df2['VALUE']_ df2['type']我不能洗掉行。
我試過了
df1['New'] = np.where((df1['category'] == df2['CATEGORY']) & (df1['location'] == df2['location']), df2['VALUE'], None)
這出現了:
ValueError:只能比較標簽相同的系列物件
uj5u.com熱心網友回復:
您可以使用pandas.set_index()函式創建一個 multiIndex 資料幀以從中獲取值df2并使用pandas.reset.index()重置資料幀。請看下面我的示例代碼。我已經復制了您的資料框df1和df2.
代碼:
import pandas as pd
data1 = {'category': ['A', 'A', 'A', 'A','B', 'B', 'B', 'B'],
'location': ['loc1', 'loc1', 'loc2', 'loc2','loc1', 'loc1', 'loc2', 'loc2'],
'type': [1,2,1,2,1,2,1,2,],
'v1': [2,4,6,8,10,12,14,16]}
data2 = {'category': ['A', 'A','B', 'B'],
'location': ['loc1', 'loc2', 'loc1','loc2'],
'VALUE': [50,30,70,90]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df_temp = df1.set_index(['category','location'])
df_temp['New'] = df2.set_index(['category','location'])['VALUE']
df1 = df_temp.reset_index()
df1['Calculated_Field'] = df1['v1']/df1['New']
df1
輸出:

參考:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.set_index.html
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reset_index.html#pandas.DataFrame.reset_index
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/525786.html
上一篇:分析和過濾資料框中的調查回應
