我想試用方法的Pandas DataFrame
對象的功能。下面是使用案例:熊貓DataFrame ApplyMap方法
讓說我的數據幀df1
如下:
Age ID Name
0 27 101 John
1 22 102 Bob
2 19 103 Alok
3 27 104 Tom
4 32 105 Matt
5 19 106 Steve
6 5 107 Tom
7 55 108 Dick
8 67 109 Harry
現在我想創建一個標誌變量與邏輯,如果元素的長度小於2,則標誌= 1 else flag = 0。
爲了運行這個元素,我想使用applymap
方法。所以,我創建了一個用戶定義的函數如下:
def f(x):
if len(str(x))>2:
df1['Flag']=1
else:
df1['Flag']=0
然後我跑df1.applymap(f)
這給:
Age ID Name
0 None None None
1 None None None
2 None None None
3 None None None
4 None None None
5 None None None
6 None None None
7 None None None
8 None None None
,而不是創建一個具有標誌值一個標誌變量。我如何使用applymap
實現所需的功能?
我們不能在用戶定義函數內使用DataFrame變量名稱或pandas語句嗎?也就是df1['Flag']
裏面有效的f()
的定義?
謝謝。只是後續行動。在df1 ['Flag'] = df1.applymap(f).sum(axis = 1).astype(bool)語句中,當我們按列求和時,第一行的值應該爲2(1 + 1 +0)?那麼bool應該是真實的儀式?那麼爲什麼它是假的? – Baktaawar
是的,對不起 - 我從'all'函數中複製了結果,但是在sum函數中寫入了結果(bool(sum)給出了所有行的True,這不是一個好例子)。現在修復。 – Bonlenfum
@Baktaawar如果這解決了您的問題,那麼除了「謝謝」之外,如果您能接受答案,這將非常棒! – Owen