python - 熊猫 read_fwf
问题描述
我没有得到一张清晰的桌子。请帮忙。我的数据是:
0 2017 IX 2018 X 2018 X 2018 X 2018 0 2017 IX 2018 X 2018 X 2018 X 2018
0 2017 IX 2018 0 2017 IX 2018
UKUPNO 1.053 1.075 1.093 103,8 101,7 1.633 1.669 1.701 104,2 101,9
A Poljoprivreda, šumarstvo i ribolov 907 888 925 102,0 104,2 1.394 1.356 1.420 101,9 104,7
B Vađenje ruda i kamena 913 919 839 91,9 91,3 1.395 1.406 1.297 93,0 92,2
C Prerađivačka industrija 769 764 775 100,8 101,4 1.176 1.169 1.187 100,9 101,5
D Proizvodnja i snabdijevanje 1.574 1.570 1.647 104,6 104,9 2.459 2.455 2.579 104,9 105,1
električnom energijom, plinom,
parom i klimatizacija
我使用这段代码:
df = pd.read_fwf(io.StringIO(t), header=None, skiprows=1)
我得到了需要清理的输出......例如,我将 D 列分隔为三列:
D Proizvodnja i snabdijevanje 1.574 1.570 1.647 104,6 104,9 2.459 2.455 2.579 104,9 105,1
13 NaN električnom energijom, plinom, NaN NaN NaN NaN NaN NaN NaN NaN
14 NaN parom i klimatizacija NaN NaN NaN NaN NaN NaN NaN NaN
解决方案
问题仅在于 D-“行”,其文本分为 3 行?如果是这样,您可以这样做:
s = """
0 2017 IX 2018 X 2018 X 2018 X 2018 0 2017 IX 2018 X 2018 X 2018 X 2018
0 2017 IX 2018 0 2017 IX 2018
UKUPNO 1.053 1.075 1.093 103,8 101,7 1.633 1.669 1.701 104,2 101,9
A Poljoprivreda, šumarstvo i ribolov 907 888 925 102,0 104,2 1.394 1.356 1.420 101,9 104,7
B Vađenje ruda i kamena 913 919 839 91,9 91,3 1.395 1.406 1.297 93,0 92,2
C Prerađivačka industrija 769 764 775 100,8 101,4 1.176 1.169 1.187 100,9 101,5
D Proizvodnja i snabdijevanje 1.574 1.570 1.647 104,6 104,9 2.459 2.455 2.579 104,9 105,1
električnom energijom, plinom,
parom i klimatizacija
"""
df = pd.read_fwf(pd.compat.StringIO(s), header=None, skiprows=5)
df[0] = df[0].ffill()
df[1] = df[0].map(df[1].groupby(df[0]).agg(lambda x: ' '.join(x)))
df = df.dropna(axis=0)
df
输出:
0 1 2 3 4 5 6 7 8 9 10 11
0 A Poljoprivreda, šumarstvo i ribolov 907.000 888.00 925.000 102,0 104,2 1.394 1.356 1.420 101,9 104,7
1 B Vađenje ruda i kamena 913.000 919.00 839.000 91,9 91,3 1.395 1.406 1.297 93,0 92,2
2 C Prerađivačka industrija 769.000 764.00 775.000 100,8 101,4 1.176 1.169 1.187 100,9 101,5
3 D Proizvodnja i snabdijevanje električnom energi... 1.574 1.57 1.647 104,6 104,9 2.459 2.455 2.579 104,9 105,1
推荐阅读
- mysql - 如何解决这个 MySQL COUNT 查询?
- node.js - 用于聚合 Firestore 字段值的 Typescript 云函数
- python - 带有 .onion 地址的 grpc insecure_channel (python)
- websocket - Chrome 打开 WebSocket
- r - 在 R Shiny 中检查上传中的文件名
- time-series - Influxdb - 处理多个分段
- python - 在顶级路由中按用户名进行烧瓶路由
- java - Micronaut GraalVM native-image 中没有 [com.mongodb.client.MongoClient] 类型的 bean
- javascript - 我不知道如何使用 img 标签显示图像。我正在通过
- file-upload - Laravel上传文件403服务器禁止错误