我有一个使用pandas dataframe处理的csv文件。
在名为left
的列中,我应该只有数字
1)
df.icol(4)
0 2492
1 2448
2 2410
3 2382
4 2358
5 2310
6 2260
7 2208
8 2166
9 2134
10 198
11 198
12 239
13 239
14 243
15 241
16 239
17 394
18 396
19 396
20 396
21 396
22 396
23 396
24 396
Name: bottom, dtype: object
然而,在我的csv文件中更进一步,我注意到我有类似396]或[456。我的问题是如何删除此列中的所有[和]。 2) 在另一栏
df1.icol(0)
0 'm'
1 'i'
2 'i'
3 'l'
4 'm'
5 'u'
6 'i'
7 'l'
8 'i'
9 'l'
10 '.'
11 '3'
12 'A'
13 'M'
14 'S'
15 'U'
16 'N'
17 'A'
18 'D'
19 'R'
20 'E'
21 'S'
22 'S'
23 'E'
Name: char, dtype: object
我还注意到我的行有['E'
,]'S'
而不是'E'
和'S'
。
如何删除[
和]
?
3)我有一个数据框
df =[['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]]
我想删除所有'[]'
因此,我正在寻找以下内容:
df= [['c', 88, 118, 2872, 2902], ['g', 8, 98, 287, 202]]
答案 0 :(得分:3)
我认为如果需要替换所有列中的值,可以使用replace
清空字符串:
df = df.replace(['\[','\]'], ['',''], regex=True)
样品:
df = pd.DataFrame({'char':['[E','S]','[E']})
print (df)
char
0 [E
1 S]
2 [E
df = df.replace(['\[','\]'], ['',''], regex=True)
print (df)
char
0 E
1 S
2 E
如果只需要在一栏中更换:
df.char = df.char.replace(['\[','\]'], ['',''], regex=True)
print (df)
char
0 E
1 S
2 E
要删除空列表,请使用list comprehension
:
L = [['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]]
L1 = [x for x in L if len(x) !=0]
print (L1)
[['c', 88, 118, 2872, 2902], ['g', 8, 98, 287, 202]]
并删除NaN
行dropna
:
df = pd.DataFrame([['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]])
print (df)
0 1 2 3 4
0 c 88.0 118.0 2872.0 2902.0
1 None NaN NaN NaN NaN
2 g 8.0 98.0 287.0 202.0
print (df.dropna(how='all'))
0 1 2 3 4
0 c 88.0 118.0 2872.0 2902.0
2 g 8.0 98.0 287.0 202.0