【发布时间】:2021-06-29 17:32:35
【问题描述】:
我想获取列中每个键的缺失日期。我的数据框如下,
size number key date
0 153.2 K 12345 Hello 20181002
1 153.2 K 12345 No 20181001
2 153.2 K 12345 Hello 20181003
3 153.2 K 12345 No 20181003
4 153.2 K 12345 Hello 20181004
5 153.2 K 12345 No 20181005
6 153.2 K 12345 Hello 20181006
我想得到以下结果
key date
No 20181002
No 20181004
Hello 20181005
对于 key="No" 没有日期 20181002、20181004。我想说的是每个键都有不同的日期范围,输出应该缺少特定日期范围内每个键的日期
我使用了以下代码,但它需要两个键的日期,开始日期为 20181001,结束日期为 20181006
import pandas as pd
df = pd.read_csv('4002.csv')
print(df.head(1))
dates = pd.date_range(*pd.to_datetime(df['date'], format='%Y%m%d',errors='coerce').agg(['min', 'max']), freq='D').strftime('%Y%m%d').astype(int)
df1=pd.DataFrame(index=pd.Index(df['key'].unique(), name='key'),columns=dates.difference(df['date'])).reset_index().melt('key').drop(columns=['value'])
print(df1)
df1.to_csv('4002output.csv', index=False)
【问题讨论】:
-
您的列中的每个日期似乎都有一个值。他们“缺少”什么?我不确定我是否遵循逻辑来获取您的结果数据框。
-
你的问题不清楚。也许您可以添加更多解释:应显示 Hello 在该范围内开始的日期,例如 Hello 的 startdate 是 20181002,No 是 20181001
-
@jorf.brunning 见stackoverflow.com/questions/68181630/…。提问者基本上要求重新索引
-
@jorf.brunning 抱歉我已经编辑了输出,对于 key="No" 没有日期 20181002、20181004。我想说的是每个键都有不同的日期范围和输出应该缺少特定日期范围内每个键的日期
-
你为什么不能同时得到
Hello 20181001和No 20181006?
标签: python pandas dataframe date