python快速整理excel_使用pandas包用python清理excel数据

我用pandas使用pd.read_excel将xls文件读入

Python

我正在努力清理我的数据,但我已经离开了我的联盟.

每条记录之间都有一个空行.在示例pic中,它优于第4,9和11行.

有一个注释列,在示例中指定(请参阅链接)为“col_F”.每条记录至少有一个包含文本的单元格.创建此xls文件的人将更长的注释拆分为多个单元格.

我想将col_F中用于特定记录的所有数据连接到一个单元格中.

一旦我弄清楚如何正确连接col_F,我也会删除空白记录.

我使用的是Python 3.5.0版本,numpy 1.12.0和pandas 0.19.2

这是我到目前为止:

import numpy as np

import pandas as pd

data = pd.read_excel("C:/blah/blahblah/file.xls", header=0, nrows=10000)

df = pd.DataFrame(data)

我感谢任何建议或见解!!

谢谢!

原始数据的外观如何:

wErpN.jpg

更新:

这是我加载到Python时数据的外观

YixST.jpg

这就是我期望的结果:

4guGG.jpg

最佳答案 这是我在@Boud在评论中解释的原始解决方案.我首先在这里创建示例数据:

df = pd.DataFrame([

['record1', '10', 'date1', 'optional', 'comment'],

['', '', '', '', 'comment continued'],

['', '', '', '', ''],

['record2', '100', 'date2', '', 'comment'],

['', '', '', '', 'comment continued'],

['', '', '', '', 'comment continued'],

['', '', '', '', 'comment continued'],

['', '', '', '', ''],

['record3', '10000', 'date3', '', 'comment']],

columns=['col_A', 'col_B', 'col_C', 'col_D', 'col_F'])

df.replace('', np.nan, regex=True, inplace=True)

请注意,此处的空白应填充NaN而不是空格.基本上,首先,您可以使用dropna删除不首先使用的行.

df.dropna(axis=0, how='all', inplace=True) # drop NaN by row

然后,您可以通过以前的记录填写col_A.

new_col = []

row_name = ''

for r in df.col_A:

if not pd.isnull(r):

row_name = r

new_col.append(row_name)

df.col_A = new_col

之后,您可以通过将groupby函数应用于A列来对其他列进行分组,并通过连接字符串来聚合其他列,如下所示.

gr = df.groupby('col_A')

def join_str(x):

x = list(map(str, x))

x = [e for e in x if str(e) != 'nan']

return ' '.join(x)

gr.agg({'col_B' : join_str,

'col_C': join_str,

'col_D': join_str,

'col_F': join_str}).reset_index()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值