<p>尽可能避免迭代,因为这是熊猫的反模式<a href="https://stackoverflow.com/questions/7837722/what-is-the-most-efficient-way-to-loop-through-dataframes-with-pandas">good read</a></p>
<pre><code>import pandas as pd
data = pd.read_excel('state_dist_sc.xls')
data=data[data['Name']!='India']
data=data[data['TRU']=='Total']
states_group=data[data['Level']=='State']
#create a copy of data on which we will be calculating literacy rate.
states_group = states_group.copy()
#Calculate litracy rate using vector formula which is faster and more.
states_group['literacy_rate'] = 100*(states_group['P_LIT'] + states_group['F_LIT'])/states_group['TOT_P']
# use to_records to get list of tuples
ans = states_group[['Name','literacy_rate']].to_records(index=False)
ans
</code></pre>
<p>输出:</p>
<pre><code>rec.array([('JAMMU & KASHMIR', 85.48483174),
('HIMACHAL PRADESH', 99.94639301), ('PUNJAB', 80.81086172),
('CHANDIGARH', 93.79363692), ('UTTARAKHAND', 89.68912284),
('HARYANA', 79.60841792), ('NCT OF DELHI', 97.53174349),
('RAJASTHAN', 67.74583313), ('UTTAR PRADESH', 69.97165068),
('BIHAR', 52.93727261), ('SIKKIM', 98.69142352),
('MANIPUR', 96.23643761), ('MIZORAM', 109.11330049),
('TRIPURA', 116.06537002), ('MEGHALAYA', 84.10832613),
('ASSAM', 96.45160871), ('WEST BENGAL', 87.43751069),
('JHARKHAND', 63.21118996), ('ODISHA', 85.26025661),
('CHHATTISGARH', 85.10488906),
('MADHYA PRADESH', 78.05530967), ('GUJARAT', 99.23621537),
('DAMAN & DIU', 121.84846506),
('DADRA & NAGAR HAVELI', 112.3019722 ),
('MAHARASHTRA', 100.96838647),
('ANDHRA PRADESH', 79.67158709), ('KARNATAKA', 81.40012899),
('GOA', 110.11041691), ('KERALA', 120.14013153),
('TAMIL NADU', 94.529868 ), ('PUDUCHERRY', 101.16541449)],
dtype=[('Name', 'O'), ('literacy_rate', '<f8')])
</code></pre>