所以如果我有一个熊猫数据框,如:
A B C D
0 1 2 3 a
1 2 4 6 a
2 4 8 8 b
3 2 3 5 c
,并想根据列“ D”中的条件从“ A”,“ B”或“ C”列中进行选择来插入“ E”行,我该怎么做?例如:如果D == a,则选择'A',否则选择'B',输出:
A B C D E
0 1 2 3 a 1
1 2 4 6 a 2
2 4 8 8 b 8
3 2 3 5 c 3
谢谢!
答案 0 :(得分:4)
这是lookup
df.lookup(df.index,df.D.str.upper())
Out[749]: array([1, 2, 8, 5], dtype=int64)
df['E']=df.lookup(df.index,df.D.str.upper())
答案 1 :(得分:0)
Lookup
将在这里工作。以下示例返回integers
和strings
。
import pandas as pd
d = ({
'A' : ['x','y','z','x'],
'B' : ['j','k','l','m'],
'C' : ['n','o','p','q'],
'D' : ['A','C','B','A'],
})
df = pd.DataFrame(d)
df = df.assign(E=df.lookup(df.index, df.D.map('{}'.format)))
print(df)
A B C D E
0 x j n A x
1 y k o C o
2 z l p B l
3 x m q A x
类似于integer
import pandas as pd
d = ({
'A' : [1,2,3,4],
'B' : [4,3,2,1],
'C' : [5,6,7,8],
'D' : ['A','C','B','A'],
})
df = pd.DataFrame(d)
df = df.assign(E=df.lookup(df.index, df.D.map('{}'.format)))
print(df)
A B C D E
0 1 4 5 A 1
1 2 3 6 C 6
2 3 2 7 B 2
3 4 1 8 A 4
答案 2 :(得分:0)
我希望这对您有帮助
import pandas as pd
import random
data = []
D = ['a','b','c']
for i in range(4):
new_list = []
for x in range(3):
new_list.append(random.randint(0,10))
new_list.append(random.choice(D))
data.append(new_list)
df = pd.DataFrame(data, columns = ['A', 'B', 'C', 'D'])
会提供随机数据
IN[120]:df
Out[120]:
A B C D
0 1 10 8 a
1 4 9 7 a
2 4 10 6 b
3 5 10 4 b
然后添加'E'从D中选择一个字母。
choice = random.choice(list(df['D'])).upper()
E = list(df[choice])
df['E'] = E
返回
IN[122]:df
Out[122]:
A B C D E
0 1 10 8 a 1
1 4 9 7 a 4
2 4 10 6 b 4
3 5 10 4 b 5
您修复D中的数据,使其包含字母a至c的所有字母。这是随机的