我正在制作几张 excel 表格,它们看起来都像附上的第一张表格。目前我正在尝试删除前 11 行,以及基于索引的第一列。不知何故,我无法让它工作,标题“Eidgenössische Volkszählung 2000. Bevölkerungsentwicklung der Gemeinden 1850-2000”仍然可见。它删除所有没有标题的行。
我的最终目标是让它看起来像第二张照片,我认为不应该那么难。
如果有人能告诉我如何根据索引删除行和列,我将不胜感激。我在 1h 谷歌搜索中没有找到任何解决方案。
import pandas as pd
df = pd.read_excel("AG.xls", "AG")
df = df.drop([0,1,2,3,4,5,6,7,8,9,10])
print(df)
最佳答案
尝试:
import pathlib
data_dir = pathlib.Path('.')
data = []
for xlsfile in data_dir.glob('??.xls'):
df = pd.read_excel(xlsfile, skiprows=8)
df = df[pd.to_numeric(df.iloc[:, 0], errors='coerce').notna()]
df = pd.concat([df.iloc[:, 1:].set_index('Unnamed: 1')],
keys=[xlsfile.stem], names=['Kanton', 'Stadt'])
data.append(df)
df = pd.concat(data)
使用第一列过滤行。如果列 Unnamed: 0
可以转换为数字,则保留它,否则丢弃。我使用 skiprows=8
来获取列标题(1850、1860、...)。每个数据帧的索引是一个 MultiIndex:文件名 - Kanton - (xlsfile.stem
) 和城市 - Stadt - (列 Unnamed: 1
)。输出结果:
>>> df
1850 1860 1870 1880 1888 1900 1910 1920 1930 1941 1950 1960 1970 1980 1990 2000 1850 / 1880 1880 / 1910 1910 / 1941 1941 / 1970 1970 / 2000
Kanton Stadt
TI Arbedo-Castione 801 773 800 839 873 1042 1200 1212 1260 1302 1335 1467 2456 3058 3570 3729 0.2 1.2 0.3 2.2 1.4
Bellinzona 1) 3209 3462 3950 4038 5553 8255 10406 10232 10706 10948 12060 13435 16979 16743 16849 16463 0.8 3.2 0.2 1.5 -0.1
Cadenazzo 216 229 231 538 316 333 408 481 482 505 621 693 995 1179 1500 1755 3.1 -0.9 0.7 2.4 1.9
Camorino 321 337 467 483 423 405 491 571 548 552 702 920 1376 1476 1709 2210 1.4 0.1 0.4 3.2 1.6
Giubiasco 2) 1417 1503 1539 1587 1570 1722 2395 2585 2607 2932 3311 4281 5796 6585 6982 7418 0.4 1.4 0.7 2.4 0.8
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
ZG Risch 1005.0 1027.0 896.0 1235.0 1171.0 1047.0 1106.0 1258.0 1281.0 1449.0 1630.0 2038.0 3182.0 3988.0 5414.0 7241.0 0.7 -0.4 0.9 2.7 2.8
Steinhausen 490.0 465.0 436.0 468.0 498.0 443.0 470.0 560.0 743.0 787.0 1078.0 1621.0 4138.0 6082.0 7207.0 8801.0 -0.2 0.0 1.7 5.9 2.5
Unterägeri 2243.0 2423.0 2565.0 2426.0 2378.0 2593.0 2502.0 2787.0 3005.0 2969.0 3340.0 3832.0 4671.0 5371.0 6151.0 7179.0 0.3 0.1 0.6 1.6 1.4
Walchwil 1039.0 1030.0 1072.0 1054.0 1021.0 1059.0 1043.0 1046.0 1072.0 1118.0 1226.0 1400.0 1675.0 2181.0 2654.0 3150.0 0.0 0.0 0.2 1.4 2.1
Zug 1) 3302.0 3854.0 4243.0 4805.0 5120.0 6508.0 8096.0 9499.0 11113.0 12372.0 14488.0 19792.0 22972.0 21609.0 21705.0 22973.0 1.3 1.8 1.4 2.2 0.0
[2896 rows x 21 columns]
关于python - 使用 python pandas 编辑 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69595469/