python - 如何从 pandas 数据框中的多列中删除字符?

标签 python python-3.x

我想从 pandas 数据框中的列中删除字符。我有大约 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

我想删除“\”和所有字母并将其变成 float 。我不想更改 NAN。

我使用了df[column name'] = df.str[:4] - 它删除了一些单元格,但不是所有单元格。另外,无法转换为 float ,因为我收到错误

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\

它仍然没有转换其他单元格

当我尝试转换为 float 时出现错误

ValueError: could not convert string to float: '10.2\I'

最佳答案

我可以看出您的代码不起作用的两个原因:

  • 使用 [:4] 并不适用于示例中的所有值,因为小数点之前(显然是小数点之后)的位数各不相同。
  • df['column name'] = df.str[:4] 赋值中,等号右侧需要有相同的列标识符。

这是一个包含示例数据框的解决方案,我使用两个缩写列(如您的示例中所示)准备。它使用 [:-2] 从右侧截断每个值,然后用原始 NAN 替换剩余的 N,然后再转换为 float 。

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

关于python - 如何从 pandas 数据框中的多列中删除字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437462/

相关文章:

python - 将 X、Y、Z 值转换为矩阵图

python - 如何在 django 中更新现有记录而不是创建新记录?

python - 如何构造解压缩以空字符结尾的字符串?

python - 实验室 : calculate discounts

python tkinter 通过单击按钮打开新窗口并关闭第一个窗口

python - 如何强制 tkinter 文本小部件保持在一行

python - 如何在打印矩阵之前在每行之前添加额外的空格?

Python BeautifulSoup 在 findall() 中提供字符串时改变行为

python dataset - 读取一组列并将其放入单独的数据框中?

python/kivy : How to pass text value from another class in . kv 文件