擅长:python、mysql、java
<p>这回答了你的问题吗</p>
<pre><code>df = pd.DataFrame({'1': [5614,4564,3314,3144,1214,4314],
'2': ['banana','kiwi' ,'salsa','avocado','mix','juice'],
'3': ['Pos1','Pos4','Pos3','Pos3','Pos1','Pos1']
})
# replace strings only in column 3
df.loc[4:, '3'] = df.loc[ 4:,'3'].replace('Pos1', 'Pos3')
# sort values by column '3'
df = df.sort_values('3')
df
>>>
1 2 3
0 5614 banana Pos1
2 3314 salsa Pos3
3 3144 avocado Pos3
4 1214 mix Pos3
5 4314 juice Pos3
1 4564 kiwi Pos4
</code></pre>
<p>这将替换“3”中大于4的所有索引的所有字符串。稍后,它将按此列排序(无需重新编制索引)</p>
<p>如果希望索引保持不变,则必须使用<code>df = df.sort_values('3', ignore_index=True)</code>进行排序</p>
<p><strong>更新</strong></p>
<p>如果您想在索引大于3后对数据帧进行排序,则必须先进行切片,然后进行排序并替换值。可以像这样</p>
<pre><code>df.loc[3:] = df.loc[3:].sort_values('3').set_index(df.loc[3:].index)
</code></pre>
<p>调用<code>set_index</code>是很重要的,因为如果不这样做,右侧将再次从<code>0</code>开始,并且将用NaN值填充数据帧</p>