清理pandas Dataframe中的单列

时间:2019-02-22 14:07:08

标签: python python-3.x pandas

将CSV导入为熊猫数据框,并删除所有完全空白的列:

import pandas as pd 

df1 = pd.read_csv("name.csv") 
df1 = df1.dropna(axis=1,how='all')

可惜一栏看起来像:

'Background\r\n * find it: IDE-3: Some Name\r\n * Dokument: SomeName.pptx\r\n * Field: TEG-33\r\n  * happy: Done\r\n\r\nh3. Definition\r\n\r\n\xa0tbd.\r\nh3. exists\r\n\r\ncsv\r\nh3. Source\r\n\r\ncsv?\r\n\r\npotentiell?\r\n\r\ntbd\r\nh3. task\r\n\r\ntbd\r\n\r\n\xa0'

问题1 :我想删除所有\ r \ n和\ r \ n \ r \和\ r \ n \ r \ n \和\ r \ n \ r \ n \ xa0等。有人可以提供正则表达式帮助吗?我找不到清晰的图案。

问题2 :首先将CSV导入熊猫数据框时,如何防止所有这些不同形式的\ r \ n \ r \(请参阅问题2)?< / p>

在清除数据框中提到的列的所有行之后,最终结果应为 enter image description here

(Python 3,Anaconda3发行版,在Windows 10上)

2 个答案:

答案 0 :(得分:1)

对于问题1:

(df1['Column 3']
.str.replace('\r','')
.str.replace('\n','')
.str.replace('\xa0', ''))

对于问题2:您可以在将数据输入到csv中时清理它们-但是很难说,不知道数据来自何处!

答案 1 :(得分:1)

问题1

此正则表达式将实现您想要的:

(\r\n)+(\r)*(\xa0)*

说明:

(\r\n)+  # One or more copies of '\r\n'
(\r)*    # Any extra appended    '\r'
(\xa0)*  # Any final appended    '\xao'

不过请注意,在您的示例中,没有\r\n...\r形式的字符串,即末尾带有\r的字符串。