如何根据 pandas 中的 if-else 条件从元组索引中提取字符串?
How to extract a string from tuple index based on if-else condition in pandas?
我的数据框df.shape (105,6)
import pandas as pd
import io
import ast
""" Ccom Wcom Lcom Dcom Total Winner
(A1, A2) -1.0 1.0 1.0 0.0 1.0 (A1, A2)
(A1, A3) -1.0 -1.0 1.0 1.0 0.0 (A1, A3)
(A1, A4) 1.0 -1.0 1.0 1.0 2.0 (A1, A4)
(A1, A5) -1.0 -1.0 -1.0 1.0 -2.0 (A1, A5)
(A1, A6) -1.0 -1.0 0.0 1.0 -1.0 (A1, A6) """
我想要基于条件的数据框 Winner 列中的索引名称(即元组)
if(df.Total > 0) --> Winner left i.e Winner = A1
elif(df.Total < 0) --> Winner right one i.e Winner = A2
elif(df.Total == 0 ) --> Winner='Draw' And keep a count of draw in both A1 and A2
输出应该是这样的:
Ccom Wcom Lcom Dcom Total Winner
(A1, A2) -1.0 1.0 1.0 0.0 1.0 A1
(A1, A3) -1.0 -1.0 1.0 1.0 0.0 Draw
(A1, A4) 1.0 -1.0 1.0 1.0 2.0 A1
(A1, A5) -1.0 -1.0 -1.0 1.0 -2.0 A5
(A1, A6) -1.0 -1.0 0.0 1.0 -1.0 A6
通过索引 [0]
、[1]
:
在索引元组中使用 numpy.select
和 select 值
m1 = df.Total > 0
m2 = df.Total < 0
df['Winner'] = np.select([m1, m2], [df.index.str[0], df.index.str[1]], default='Draw')
print (df)
Ccom Wcom Lcom Dcom Total Winner
(A1,A2) -1.0 1.0 1.0 0.0 1.0 A1
(A1,A3) -1.0 -1.0 1.0 1.0 0.0 Draw
(A1,A4) 1.0 -1.0 1.0 1.0 2.0 A1
(A1,A5) -1.0 -1.0 -1.0 1.0 -2.0 A5
(A1,A6) -1.0 -1.0 0.0 1.0 -1.0 A6
我的数据框df.shape (105,6)
import pandas as pd
import io
import ast
""" Ccom Wcom Lcom Dcom Total Winner
(A1, A2) -1.0 1.0 1.0 0.0 1.0 (A1, A2)
(A1, A3) -1.0 -1.0 1.0 1.0 0.0 (A1, A3)
(A1, A4) 1.0 -1.0 1.0 1.0 2.0 (A1, A4)
(A1, A5) -1.0 -1.0 -1.0 1.0 -2.0 (A1, A5)
(A1, A6) -1.0 -1.0 0.0 1.0 -1.0 (A1, A6) """
我想要基于条件的数据框 Winner 列中的索引名称(即元组)
if(df.Total > 0) --> Winner left i.e Winner = A1
elif(df.Total < 0) --> Winner right one i.e Winner = A2
elif(df.Total == 0 ) --> Winner='Draw' And keep a count of draw in both A1 and A2
输出应该是这样的:
Ccom Wcom Lcom Dcom Total Winner
(A1, A2) -1.0 1.0 1.0 0.0 1.0 A1
(A1, A3) -1.0 -1.0 1.0 1.0 0.0 Draw
(A1, A4) 1.0 -1.0 1.0 1.0 2.0 A1
(A1, A5) -1.0 -1.0 -1.0 1.0 -2.0 A5
(A1, A6) -1.0 -1.0 0.0 1.0 -1.0 A6
通过索引 [0]
、[1]
:
numpy.select
和 select 值
m1 = df.Total > 0
m2 = df.Total < 0
df['Winner'] = np.select([m1, m2], [df.index.str[0], df.index.str[1]], default='Draw')
print (df)
Ccom Wcom Lcom Dcom Total Winner
(A1,A2) -1.0 1.0 1.0 0.0 1.0 A1
(A1,A3) -1.0 -1.0 1.0 1.0 0.0 Draw
(A1,A4) 1.0 -1.0 1.0 1.0 2.0 A1
(A1,A5) -1.0 -1.0 -1.0 1.0 -2.0 A5
(A1,A6) -1.0 -1.0 0.0 1.0 -1.0 A6