我有以下数据:
production_type type_a type_b type_c type_d
0 type_a 1.173783 0.714846 0.583621 1
1 type_b 1.418876 0.864110 0.705485 1
2 type_c 1.560452 0.950331 0.775878 1
3 type_d 1.750531 1.066091 0.870388 1
4 type_a 1.797883 1.094929 0.893932 1
5 type_a 1.461784 0.890241 0.726819 1
6 type_b 0.941938 0.573650 0.468344 1
7 type_a 0.507370 0.308994 0.252271 1
8 type_c 0.443565 0.270136 0.220547 1
9 type_d 0.426232 0.259579 0.211928 1
10 type_d 0.425379 0.259060 0.211504 1
我想创建一个新的列,列表或系列,以返回列的值。
输出
production_type type_a type_b type_c type_d Results
0 type_a 1.173783 0.714846 0.583621 1 1.173783
1 type_b 1.418876 0.864110 0.705485 1 0.864110
2 type_c 1.560452 0.950331 0.775878 1 0.775878
3 type_d 1.750531 1.066091 0.870388 1 1
4 type_a 1.797883 1.094929 0.893932 1 1.797883
5 type_a 1.461784 0.890241 0.726819 1 1.461784
6 type_b 0.941938 0.573650 0.468344 1 0.573650
基本上,如果在[production_type]列中写入type_a,我想在[结果]列中返回type_a的结果。
我尝试了以下内容:
for i in df:
if i == 'type_a':
print ('type_a')
elif i == 'type_b':
print ('type_b')
elif i == 'type_c':
print ('type_c')
elif i == 'type_d':
print ('type_d')
else:
print('')
print('')
使用result.append
要生成数据帧,请使用以下命令:
list_cols = ['type_a','type_b','type_c']
df = pd.DataFrame(np.random.rand(10, 3), columns = list_cols )
df['production_type']= ['type_a','type_b','type_c','type_d','type_a','type_a','type_b'
,'type_b','type_c','type_d']
df['type_d'] = 1
df['results'] = ''
有关搜索位置的任何提示?
答案 0 :(得分:2)
您可以使用pd.DataFrame.apply
:
df['Results'] = df.apply(lambda row: row.get(row['production_type']), axis=1)
<强>解释强>
pd.DataFrame.apply
的axis=1
将函数应用于每一行,并通过隐式循环提取每行的组件。lambda
函数作为参数。lambda
函数,以便从production_type
列中提取所需的值。答案 1 :(得分:1)
您可以尝试
result = list()
index =0
for i in df['production_type']:
value = df[i][index]
index = index+1
result.append(value)
df['Results'] = pd.DataFrame(result)
答案 2 :(得分:1)
您可以通过传递map
函数来使用lambda
方法。
df['Results'] = df.index.map(lambda index : df[df['production_type'][index]][index])