我知道可能已经有人问过这个问题,但是它是python的新手,仍然有问题。我从2020年4月开始提取了不完整的数据,现在我正试图从数据框中删除2020年4月的数据和/或创建一个不包含2020年4月的新数据框。
我将日期时间转换为年和月。 数据帧:cdf2 到目前为止创建了一个蒙版:
cdf2['year']=pd.DatatimeIndex(cdf2['Invoice Paid Date']).year
cdf2['month']=pd.DatatimeIndex(cdf2['Invoice Paid Date']).month
mask= cdf2=cdf2[(cdf2['year']==2020.0) & (cdf2['month']==4.0)]
正试图做cdf3=cdf2[~mask]
,但这没用
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
这是一种方法:
首先,我创建了一个测试数据框,其日期为三月,四月和五月。
import pandas as pd
invoice_date = pd.date_range(start='2020-03-01', end='2020-05-15', freq='14d')
amt = [100 + i for i in range(len(invoice_date))]
df = pd.DataFrame({'invoice_date': invoice_date, 'amt': amt})
print(df)
invoice_date amt
0 2020-03-01 100
1 2020-03-15 101
2 2020-03-29 102
3 2020-04-12 103
4 2020-04-26 104
5 2020-05-10 105
然后,我创建并应用了布尔掩码。我用面具里的日期。我没有为月份和年份创建新列。
mask = ('2020-04-01' <= df['invoice_date']) & (df['invoice_date'] <= '2020-04-30')
trimmed = df[~ mask]
print(trimmed)
invoice_date amt
0 2020-03-01 100
1 2020-03-15 101
2 2020-03-29 102
5 2020-05-10 105