这似乎是一项天生简单的任务,但我发现很难从整个数据帧中删除“”,并返回每列中的数值,包括没有“”的数字。dateframe还包含数百列,简而言之如下:
Time A1 A2
2.0002546296 1499 1592
2.0006712963 1252 1459
2.0902546296 1731 2223
2.0906828704 1691 1904
2.1742245370 2364 3121
2.1764699074 2096 1942
2.7654050926 *7639* *8196*
2.7658564815 *7088* *7542*
2.9048958333 *8736* *8459*
2.9053125000 *7778* *7704*
2.9807175926 *6612* *6593*
3.0585763889 *8520* *9122*
我还没有编写它来遍历df中的每一列,但就第一列而言,我已经提出了这个
df['A1'].str.replace('*','').astype(float)
会产生
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
16 NaN
17 NaN
18 NaN
19 7639.0
20 7088.0
21 8736.0
22 7778.0
23 6612.0
24 8520.0
有没有一种非常简单的方法可以删除熊猫数据框中的“*”?
我发现这是一个简单的方法-使用
replace
只保留数字(和dot
和minus
符号) 这将删除字符、字母或to_replace
属性中未定义的任何内容。所以,解决方案是:
df['A1'].replace(regex=True, inplace=True, to_replace=r'[^0-9.\-]', value=r'']
df['A1'] = df['A1'].astype(float64)
还有另一种解决方案是使用map和strip函数。 您可以看到以下链接: Pandas DataFrame: remove unwanted parts from strings in a column.
解析过程只应用于所需的列。
相关问题 更多 >
编程相关推荐