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)
我感謝任何建議或見解!!
謝謝!
原始數據的外觀如何:
更新:
這是我加載到Python時數據的外觀
這就是我期望的結果:
最佳答案 這是我在@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()
總結
以上是生活随笔為你收集整理的python快速整理excel_使用pandas包用python清理excel数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux ping 端口_教你排除li
- 下一篇: bat判断文件是否存在_BAT面试必问题