Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除数据框中多列的字符?_Python_Python 3.x - Fatal编程技术网

Python 如何删除数据框中多列的字符?

Python 如何删除数据框中多列的字符?,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列,每列都有字符。请参见示例栏。列类型是字符串,希望删除字符并转换列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
我想删除“\”,所有的字母表,并使其成为一个浮点数。我不想改变现状

我使用了
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

你好坦率地说,解析你的帖子是相当困难的。请把它的格式设置得更清楚一点,使用一些标记/代码标签等,然后我相信人们会乐意提供帮助。