<p>要将结果放入<code>Dataframe</code>,可以使用<code>group_by</code>方法和<code>to_frame</code>。注意,要获得第n个最低值(而不是[:n]个最低值),请对<code>df</code>排序并选择所需的<code>n</code>。你知道吗</p>
<pre><code>import pandas as pd
data="""zipcode state county_code name rate_area_x plan_id metal_level rate rate_area_y
36749 AL 1001 Autauga 11 52161YL6358432 Silver 245.82 6
36749 AL 1001 Autauga 11 01100AO4222848 Silver 271.77 5
36749 AL 1001 Autauga 11 24848KC5063721 Silver 264.84 1
36749 AL 1001 Autauga 11 89885YK0256118 Silver 269.11 8
36749 AL 1001 Autauga 11 65392ON5819785 Silver 305.02 12
30165 AL 1019 Cherokee 13 52161YL6358432 Silver 245.82 6
30165 AL 1019 Cherokee 13 01100AO4222848 Silver 271.77 5
30165 AL 1019 Cherokee 13 24848KC5063721 Silver 264.84 1
30165 AL 1019 Cherokee 13 89885YK0256118 Silver 269.11 8
30165 AL 1019 Cherokee 13 65392ON5819785 Silver 305.02 12
30165 AL 1019 Cherokee 13 90884WN5801293 Silver 323.25 2
30165 AL 1019 Cherokee 13 79113BU1788705 Silver 344.81 7"""
# create dataframe
n_columns = 9
data = [data.split()[x:x+n_columns] for x in range(0, len(data.split()), n_columns)]
df = pd.DataFrame(data[1:], columns=data[0]).apply(pd.to_numeric, errors='ignore')
# ensure the dataframe is sorted
df = df.sort_values(['zipcode','rate'])
min_df = df.groupby('zipcode').rate.min().to_frame(name = 'rate').reset_index()
max_df = df.groupby('zipcode').rate.max().to_frame(name = 'rate').reset_index()
second_lowest_df = df.groupby('zipcode').rate.nth(1).to_frame(name = 'rate').reset_index()
</code></pre>