Python 如何删除数据框中多列的字符?
我想删除熊猫数据框中列的字符。我有大约10列,每列都有字符。请参见示例栏。列类型是字符串,希望删除字符并转换列int floatPython 如何删除数据框中多列的字符?,python,python-3.x,Python,Python 3.x,我想删除熊猫数据框中列的字符。我有大约10列,每列都有字符。请参见示例栏。列类型是字符串,希望删除字符并转换列int float 10.2\I 10.1\Y NAN 12.5\T 13.3\T 9.4\J NAN 12.2\N NAN 11.9\U NAN 12.4\O NAN 8.3\U 13.5\B NAN 13.1\V 11.0\Q 11.0\X 8.200000000000001\U NAN 13.1\T 8.1\O 9.4\N 我想删除“
10.2\I
10.1\Y
NAN
12.5\T
13.3\T
9.4\J
NAN
12.2\N
NAN
11.9\U
NAN
12.4\O
NAN
8.3\U
13.5\B
NAN
13.1\V
11.0\Q
11.0\X
8.200000000000001\U
NAN
13.1\T
8.1\O
9.4\N
我想删除“\”,所有的字母表,并使其成为一个浮点数。我不想改变现状
我使用了df[column name']=df.str[:4]
——它删除了一些单元格,但不是所有单元格。此外,由于出现错误,无法转换为浮点
df[column name'] = df.str[:4]
df['column name'].astype(float)
0 10.2
1 10.1
2 NaN
3 12.5
4 13.3
5 9.4\
6 8.3\
22 8.1\
27 9.4\
28 NaN
29 10.6
30 10.8
31 NaN
32 7.3\
33 9.8\
34 NaN
35 12.4
36 8.1\
但它并没有转化其他细胞
尝试转换为浮点时出错
ValueError:无法将字符串转换为浮点:“10.2\I”
我可以看出您的代码不起作用的两个原因:
- 在您的示例中,使用
不会对所有值都有效,因为小数点之前(显然之后)的位数不同[:4]
- 在
赋值中,等号右侧需要有相同的列标识符df['column name']=df.str[:4]
[:-2]
从右侧截断每个值,然后在转换为浮点之前将剩余的N替换为原始的N
import pandas as pd
col = pd.Series(["10.2\I","10.1\Y",'NAN','12.5\T'])
col2 = pd.Series(["11.0\Q","11.0\X",'NAN',r'8.200000000000001\U'])
df = pd.concat([col,col2],axis=1)
df.rename(columns={0:'col1',1:'col2'},inplace=True)
df
col1 col2
0 10.2\I 11.0\Q
1 10.1\Y 11.0\X
2 NAN NAN
3 12.5\T 8.200000000000001\U
#apply the conversion to all columns in the dataframe
for col in df:
df[col] = df[col].str[:-2].replace('N','NAN').astype(float)
df
col1 col2
0 10.2 11.0
1 10.1 11.0
2 NaN NaN
3 12.5 8.2
你好坦率地说,解析你的帖子是相当困难的。请把它的格式设置得更清楚一点,使用一些标记/代码标签等,然后我相信人们会乐意提供帮助。