回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我需要用python编写一个脚本,提示用户选择id为19876/20807/13978/49999的<strong>。然后根据最多<strong>id</strong><strong>列和<strong>它们的值接受用户输入,并返回数据帧中的相应行</p>
<p>例如,如果用户想要过滤19876的数据或其他任何内容,他必须写入这些id,<strong>df2</strong>应该只包含关于它的数据</p>
<p><strong>Df1</strong></p>
<pre><code> movie_ref year id
0 Captain America: The First Avenger 1942 nan
0 Avengers: Age of Ultron 2015 nan
0 Avengers: Infinity War 2017 nan
0 Avengers: Endgame 2018 nan
</code></pre>
<p><strong>Df2</strong></p>
<pre><code> id movie_ref year
0 19876 Captain America: The First Avenger 1942
0 20807 Avengers: Age of Ultron 2015
0 13978 Avengers: Infinity War 2017
0 49999 Avengers: Endgame 2018
</code></pre>
<p>我试图用python和pandas库创建一些东西</p>
<pre><code>import pandas as pd
d = {'movie_name': ['Captain America: The First Avenger', 'Avengers: Age of Ultron', 'Avengers: Infinity War', 'Avengers: Endgame'],
'correct_id': [ 'N/A','N/A','N/A', 'N/A'],'year':[1942,2015,2017,2018]}
d1 = {'movie_ref': ['Captain America: The First Avenger','Avengers: Age of Ultron', 'Avengers: Infinity War', 'Avengers: Endgame'],
'id': ['19876', '20807','13978','49999'],'year':[1942,2015,2017,2018]}
df1 = pd.DataFrame(data=d)
df2 = pd.DataFrame(data=d1)
print(df1)
print(df2)
filter_data = int(input('select movie writing the id: '))
filtered=(df2.loc[df2['id'] == filter_data])
print(filtered)
</code></pre>
<p>我得到了一个输出:</strong></p>
<pre><code>select movie writing the id: 49999
Empty DataFrame
Columns: [movie_ref, id, year]
Index: []
</code></pre>
<p><strong>预期产出</strong>:</p>
<pre><code> movie_ref id year
0 Avengers: Endgame 49999 2018
</code></pre>
<p>然后我想取id 49999并替换Df1中的nan
<strong>最终输出:</strong></p>
<pre><code> movie_ref year id
0 Captain America: The First Avenger 1942 nan
0 Avengers: Age of Ultron 2015 nan
0 Avengers: Infinity War 2017 nan
0 Avengers: Endgame 2018 49999
</code></pre>