這是最終的熊貓挑戰,在我心中,雖然它可能是基本的一些你在那裏......熊貓鏈接到行的行根據多個條件
我試圖連接特定的工作職位與其對應的調查項目。例如,網站A的總裁將歸因於調查項目的結果,網站A的響應者提供反饋意見(即「您同意以下聲明的程度?」:「我認爲網站A的質量是足夠的總體」」)。
每個站點有5個站點(0到4)。每個工作職位分配給一個或多個工作站的一個或多個工作站。
例如,一個網站的總裁工作在該網站中的所有站點,而承包商可能會在幾個站中的2個不同的網站只工作,也許。
調查數據收集在每個站中的每個位點內的質量。
一些調查項目涉及到一個或多個站點內的某些電臺。
例如, 「位置」 表看起來像這樣:
import pandas as pd
import numpy as np
pos = pd.DataFrame({'Station(s)':[',1,2,,','0,1,2,3,4'],
'Position':['Contractor','President'],
'Site(s)':['A,B','A'],
'Item(s)':['1','1,2']
})
pos[['Position','Site(s)','Station(s)','Item(s)']]
Position Site(s) Station(s) Item(s)
0 Contractor A,B ,1,2,, 1
1 President A 0,1,2,3,4 1,2
調查數據表看起來像這樣:
sd = pd.DataFrame({'Site(s)':['A','B','B','C','A','A'],
'Station(s)':[',1,2,,',',1,2,,',',,,,',',1,2,,','0,1,2,,',',,2,,'],
'Item 1':[1,1,0,0,1,np.nan],
'Item 2':[1,0,0,1,0,1]})
sd[['Site','Station(s)','Item 1','Item 2']]
Site Station(s) Item 1 Item 2
0 A ,1,2,, 1 1
1 B ,1,2,, 1 0
2 B ,,,, 0 0
3 C ,1,2,, 0 1
4 A 0,1,2,, 1 0
5 A ,,2,, NaN 1
2側筆記:
的由於不重要的原因,項目數據已被編碼爲1和0。
的逗號分隔的響應實際上是從柱中冷凝(每站和項的一列)。我只提到,因爲如果最好不要濃縮它們,那可以完成(或不完成)。
因此,這裏是我所需要的:
這(我認爲):
Contractor President Site(s) Station(s) Item 1 Item 2
0 1 1 A ,1,2,, 1 1
1 1 0 B ,1,2,, 1 0
2 0 0 B ,,,, 0 0
3 0 0 C ,1,2,, 0 1
4 0 1 A 0,1,2,, 1 0
5 1 1 A ,,2,, NaN 1
邏輯:
工程的承建商在現場A和B,只應關聯在這些網站工作的受訪者。 在這些受訪者中,他應該只有那些誰在車站1或2的工作,但沒有相關聯的也在 任何人(即站0)工作。
因此,在DF2感興趣的承包商的行是索引0,1,和5 總統的關注行是從指數0,4,5
...,最終,這:
Position Overall%
0 Contractor 100
1 President 80
邏輯:
由於總統涉及項目1和2,有5個號碼來考慮:(1和1)從第1項和(1,0,和1)從第2項。 總和項目是4和計數跨項目是5(再次,不計算'NaN'),這得到80%。
因爲承包商只關注第1項,所以需要考慮兩個數字:1和1 - 不應計算'NaN' - (分別來自感興趣的行)。因此,總數是2的計數,這是2,這給出100%
在此先感謝!
更新
我知道這工作(top answer just under question),但是這怎麼可能被應用到這種情況呢?我想這(只是嘗試邏輯的第一部分):
for i in pos['Position']:
sd[i]=[x for x in pos.loc['Site(s)'] if x in sd['Site']]
...但它拋出這個錯誤:
KeyError: 'the label [Site(s)] is not in the [index]'
...所以我仍然與它搏鬥。
你的邏輯聽起來很合理。對於電臺,必須滿足以下兩個條件: 1.調查中至少有一個元素(sd ['Station(s)'])必須存在於位置(pos ['Station(s)'])。 2.調查中沒有任何元素(sd ['Station(s)'])不能在職位(pos ['Station(s)']中找到 –
對於網站,來自sd ['Site(s) ']必須存在於pos ['Site(s)'] –
我不確定是否理解站點的條件2條件1是「X和Y的交叉點不是空的」,我想,無論如何,無論條件如何,他們總是可以用集合論的語言來寫(即作爲關於集合,交集,包含等的邏輯句子)。)如果您認爲我的回答不太正確,請隨時編輯它。請詢問是否有不清楚的地方。 – ptrj