熊猫:根据另一列的值打印一列的值

时间:2020-02-07 12:09:49

标签: python pandas

给出一个数据框:

    Animal  wings   claws   horns
0   Ant     No      No      No
1   Bat     Yes     Yes     No
2   Cat     No      Yes     No

我正在尝试打印“动物”列的相应值,其中给定列的值为“是”。

Eg1:给定的列为“爪”,输出应为“蝙蝠和猫”。

Eg2:给定的列为“ wings”,输出应为Bat

1 个答案:

答案 0 :(得分:3)

您可以分别过滤每列-用DataFrame.set_index$client->createInstances([ 'addOns' => [ [ 'addOnType' => 'AutoSnapshot', 'autoSnapshotAddOnRequest' => [ 'snapshotTimeOfDay' => config('aws.snapshotTime'), ], ], ], 'availabilityZone' => config('aws.instanceAvailabilityZone'), 'blueprintId' => config('aws.os'), 'bundleId' => config('aws.instanceType'), 'instanceNames' => ['testinstance], 'userData' => config('aws.afterInstallScript'), ]); return $result = $client->getInstanceState([ 'instanceName' => $instanceName ]); 转换为索引,然后用DataFrame.eq比较,然后按列名称过滤并将索引转换为列表:

Animal

或者可以使用dict理解来创建字典:

df1 = df.set_index('Animal').eq('Yes')

print (df1.index[df1['wings']].tolist())
['Bat']
print (df1.index[df1['claws']].tolist())
['Bat', 'Cat']
print (df1.index[df1['horns']].tolist())
[]

或者如果要使用分隔符,请添加df1 = df.set_index('Animal').eq('Yes') d = {col: df1.index[df1[col]].tolist() for col in df1} print (d) {'wings': ['Bat'], 'claws': ['Bat', 'Cat'], 'horns': []}

join

或者,如果要将所有列过滤为具有d1 = {col: ','.join(df1.index[df1[col]]) for col in df1} print (d1) {'wings': 'Bat', 'claws': 'Bat,Cat', 'horns': ''} 索引的列,并使用分隔符Animal过滤所有Yes值的值,请使用DataFrame.dot和转置,

DataFrame