清除列数据帧中的某些数据

问题描述 投票:1回答:3

我有一个pandas.Dataframe,处理后它看起来像这样:

Type|Fiscal quarter
A|FY18 Q3
A|FY18 Q4
A|FYn Q3

我想清除date = FYn类型的数据

所以它看起来像这样:

Type|Fiscal quarter
A|FY18 Q3
A|FY18 Q4
A|

我该怎么做呢?

python pandas
3个回答
3
投票

熊猫提供pd.replace,所以你可以使用:

df['Fiscal quarter']=df['Fiscal quarter'].replace('FYn.*','',regex=True)

这将使用正则表达式FYn.*达到预期目的


1
投票

您可以测试Fiscal quarter列的值,并使用它来选择要替换的值,如:

Code:

df['Fiscal quarter'][df['Fiscal quarter'].str.startswith('FYn')] = ''

测试代码:

import pandas as pd

df = pd.DataFrame([
    ('A', 'FY18 Q3'),
    ('A', 'FY18 Q4'),
    ('A', 'FYn Q3'),
], columns=['Type', 'Fiscal quarter'])

print(df)

df['Fiscal quarter'][df['Fiscal quarter'].str.startswith('FYn')] = ''
print(df)

Results:

  Type Fiscal quarter
0    A        FY18 Q3
1    A        FY18 Q4
2    A         FYn Q3

  Type Fiscal quarter
0    A        FY18 Q3
1    A        FY18 Q4
2    A               

0
投票

可以使用易于理解的for循环来检查和更改每一行:

import pandas as pd
newvals = []                          # create new list for new dataframe
for v in df.values:                   # v will be as: ['A' 'FY18 Q3']
    if v[1].startswith("FYn"):        # remove entry if criteria satisfied
        v[1] = ""
    newvals.append(v)
df = pd.DataFrame(data=newvals, columns=df.columns)
print(df)

输出:

  Type Fiscal quarter
0    A        FY18 Q3
1    A        FY18 Q4
2    A       
© www.soinside.com 2019 - 2024. All rights reserved.