在Python中从df列中删除字符串

2024-09-28 21:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用一个python3jupyter笔记本工作。你知道吗

我试着对我的数据框中由美元组成的一列进行一些数值计算。有些行用“$-”代替数字。如何告诉python忽略这些行以便查看有效数据?你知道吗

电影是我的数据帧 收入是我要看的专栏

set(movie['revenue'])

我得到这种类型的输出:

{' $-   ',
 '1',
 '10',
 '100',
 '10000',
 '97250400',
 '98000000',
 '99000000'}

到目前为止,我已经尝试了几种方法:

movie['revenue'] = pd.to_numeric(movie['revenue'])

movie['revenue'] = movie['revenue'].astype(np.float64)

似乎什么都没用。请帮帮我!你知道吗


Tags: to数据方法类型电影笔记本数字movie
3条回答

这是一种方法。你知道吗

import pandas as pd

df = pd.DataFrame([[' $-   '], ['1'], ['10'], ['100'],
                   ['10000'], ['97250400'], ['98000000'],
                   ['99000000']], columns=['A'])

df['A'] = df['A'].apply(pd.to_numeric, errors='coerce')

df.dtypes

# A    float64
# dtype: object

下面是从列表中删除包含“$”的元素的通用解决方案:

tmp = movie['revenue']
for elt in movie['revenue']:
    if elt.find('$') != -1:
        tmp.remove(elt)
movie['revenue'] = tmp

我认为处理这件事有两种方法。你知道吗

给出:

import pandas as pd
df = pd.DataFrame({'A':['12','$10','22','$99','100']})
df
    A
0   12
1  $10
2   22
3  $99
4  100

1)强制pandas.to_numeric(...)无法转换为nan的值。这样大多数计算都会忽略它们。你知道吗

pd.to_numeric(df.A, errors='coerce')
0     12.0
1      NaN
2     22.0
3      NaN
4    100.0

2)删除'$'(如果存在)并转换为数字,这样就不会丢失数据。你知道吗

df.A.apply(lambda i: float(i[1:]) if i[0] == '$' else float(i)) 
0     12.0
1     10.0
2     22.0
3     99.0
4    100.0

相关问题 更多 >