python - df.set_index() 没有按我的预期工作

标签 python pandas

Setting the Index

从上面,你可以看到我已经将索引设置为“index”。 我的期望是能够使用“索引”列来删除行,并且仅使用“Barangay”列作为功能而不是数据框的索引。

Using Index to Drop records

如上所示,仍然使用“Barangay”列作为引用索引来删除行。我尝试使用索引 [0, 1] 删除但返回错误。

最佳答案

您需要分配回来:

city_prop = city_prop.set_index('index')

或者:

city_prop.set_index('index', inplace = True)
<小时/>

编辑:

df = pd.read_csv('CityProperEskwenilaExtraIndicators.csv', 
                 skiprows=1,
                 header=None, 
                 sep=';',
                 index_col=[0,1]).T
<小时/>
print (df.head())
0 Barangay    Longitude     Latitude        Poverty rate Terrain type  \
1        #    See annex    See annex Per 100 inhabitants    See annex   
2        1  27,67231183   66,3112793                  18    Difficult   
3        2  65,15620167  53,32027629                  54    Difficult   
4        3  34,94438385   89,7970517                  63    Difficult   
5        4  10,97542641  84,26323733                  42       Normal   
6        5  26,05436012  61,30689679                  70    Difficult   

0 Roads needing repair  Access to WASH Access to clean water  \
1   kilometers of road % of population       % of population   
2          55,40469584            50,2                  71,2   
3          14,08228761            51,8                  88,9   
4          33,20044684              77                  97,4   
5          1,695918463            74,7                  52,1   
6          85,08259271            70,1                  99,3   

0 Violent incidents     Homicides  
1     rate per 100K rate per 100K  
2              7,72   6,833797715  
3               8,3   5,513650409  
4              3,72   2,931838433  
5              6,26   5,883509349  
6              6,55   5,348430398  
<小时/>
#replace ,
df = df.replace(',','.', regex=True)
#remove second level
df.columns = df.columns.droplevel(1)
#convert columns to numeric
excluded = ['Terrain type','Poverty rate']
cols = df.columns.difference(excluded)
#to floats
df[cols] = df[cols].astype(float)
#to integer
df['Poverty rate'] = df['Poverty rate'].astype(int)
print (df.head())
0  Barangay  Longitude   Latitude  Poverty rate Terrain type  \
2       1.0  27.672312  66.311279            18    Difficult   
3       2.0  65.156202  53.320276            54    Difficult   
4       3.0  34.944384  89.797052            63    Difficult   
5       4.0  10.975426  84.263237            42       Normal   
6       5.0  26.054360  61.306897            70    Difficult   

0  Roads needing repair  Access to WASH  Access to clean water  \
2             55.404696            50.2                   71.2   
3             14.082288            51.8                   88.9   
4             33.200447            77.0                   97.4   
5              1.695918            74.7                   52.1   
6             85.082593            70.1                   99.3   

0  Violent incidents  Homicides  
2               7.72   6.833798  
3               8.30   5.513650  
4               3.72   2.931838  
5               6.26   5.883509  
6               6.55   5.348430
<小时/>
print (df.dtypes)
0
Barangay                 float64
Longitude                float64
Latitude                 float64
Poverty rate               int32
Terrain type              object
Roads needing repair     float64
Access to WASH           float64
Access to clean water    float64
Violent incidents        float64
Homicides                float64
dtype: object

关于python - df.set_index() 没有按我的预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152315/

相关文章:

python - 在 Pandas 中对行和列 MultiIndex 使用 bool 索引

python - 如何在现有对象上显式加载关系?

python - 如何使用 Apache Spark Dataframes 执行 Switch 语句 (Python)

python - 将嵌套 JSON 解析为一个数据文件

python - Pandas 等效的 rbind 操作

python - Pandas 用行中的值替换列

csv - 使用正确的文件名将当前工作目录中的所有 CSV 文件读入 pandas

python - 基于 python 的 PowerShell?

python - 单击时如何获取形状的标签

用于通过比较两列创建新数据框的 Python/Pandas 语法