给出一个数据框:
Animal wings claws horns
0 Ant No No No
1 Bat Yes Yes No
2 Cat No Yes No
我正在尝试打印“动物”列的相应值,其中给定列的值为“是”。
Eg1:给定的列为“爪”,输出应为“蝙蝠和猫”。
Eg2:给定的列为“ wings”,输出应为Bat
答案 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