<p>我正在学习熊猫,所以我很有可能在这方面走错了方向。也就是说,让我们试一试:</p>
<p>首先,让我们看看是否可以找到df电影中所有动作片的行。看着<a href="https://stackoverflow.com/questions/53342715/pandas-dataframe-select-rows-where-a-list-column-contains-any-of-a-list-of-strin">Pandas dataframe select rows where a list-column contains any of a list of strings</a>,我想到了这个:</p>
<pre><code>Movies['isAction'] = [ 'Action' in x for x in Movies['genres'].tolist() ]
</code></pre>
<p>结果如下:</p>
<pre><code> tconst titleType originalTitle genres isAction
0 tt0407887 movie WhileSuppliesLast [Comedy, Musical] False
1 tt1375666 movie ElectricHeart [Adventure, Drama, Music] False
2 tt4999994 movie RainDoll [Drama] False
3 tt2690572 movie Polaris [Drama] False
4 tt0134084 movie Golmaal3 [Action, Comedy] True
</code></pre>
<p>我将<code>isAction</code>列添加到Movies df。我还更改了一些<code>tconst</code>值,以便我们可以得到一些积极的结果(第0、1和4行已更改)</p>
<p>我更改了<code>row 4</code>,这样Neve Cambelle就会出现在结果中</p>
<p>我们现在可以制作<code>tconst</code>动作片列表:</p>
<pre><code> listOfActionMovies = Movies[ Movies["isAction"] == True]["tconst"].tolist()
</code></pre>
<p>现在再次使用来自<a href="https://stackoverflow.com/questions/53342715/pandas-dataframe-select-rows-where-a-list-column-contains-any-of-a-list-of-strin">Pandas dataframe select rows where a list-column contains any of a list of strings</a>的解决方案:</p>
<pre><code>Person["inAction"] = pd.DataFrame(Person.knownForTitles.tolist()).isin( listOfActionMovies ).any(1)
</code></pre>
<p>这将产生:</p>
<pre><code> nconst primaryName primaryProfession knownForTitles inAction
0 nm0000103 FairuzaBalk [actress, soundtrack] [tt0181875, tt0089908, tt0120586, tt0115963] False
1 nm0000106 DrewBarrymore [producer, actress, soundtrack] [tt0120888, tt0343660, tt0151738, tt0120631] False
2 nm0000117 NeveCampbell [actress, producer, soundtrack] [tt0134084, tt1262416, tt0120082, tt0117571] True
3 nm0000132 ClaireDanes [actress, producer, soundtrack] [tt0274558, tt0108872, tt1796960, tt0117509] False
4 nm0000138 LeonardoDiCaprio [actor, producer, writer] [tt0120338, tt0993846, tt1375666, tt0407887] False
</code></pre>
<p>现在我们终于可以计算出动作片中的所有<code>People</code>:</p>
<pre><code>len(Person[ Person["inAction"] == True ])
</code></pre>
<p><code>len()</code>解决方案由<a href="https://stackoverflow.com/questions/17322109/get-dataframe-row-count-based-on-conditions">get dataframe row count based on conditions</a>提供</p>