我有一個DataFrame
像:如何從其他替換數據幀的元素所指示的列
df = pd.DataFrame([{'v1':'a', 'v2':'b', 'v3':'1'},
{'v1':'2', 'v2':'c', 'v3':'d'}])
或
v1 v2 v3
0 a b 1
1 2 c d
當列的內容/行爲「1」,「2 '或'3',我想將其內容替換爲指定欄中的相應項目。即,在第一行中,列v3
的值爲"1"
,因此我想用列v1
中的第一個元素的值替換它。這樣做的兩行,我應該得到:
v1 v2 v3
0 a b a
1 c c d
我可以用下面的代碼做到這一點:
for i in range(3):
for j in range(3):
df.loc[df['v%d' % (i+1)]==('%d' % (j+1)),'v%d' % (i+1)]= \
df.loc[df['v%d' % (i+1)]==('%d' % (j+1)),'v%d' % (j+1)]
有一個不太麻煩的方式來做到這一點?
這適用於我的示例'DataFrame',因爲對角線元素碰巧是被替代,但不是更普遍。 –
我的錯誤,我誤解了這個問題。我將編輯答案。 – bunji
它有麻煩,如果有任何元素'南',但非常好! –