Впервые до Python, поэтому, пожалуйста, извините за плохую артикуляцию. У меня есть некоторые данные в кадре данных, к которому я применил drop_duplicates, чтобы определить изменение состояния элемента. Данные приведены ниже. Моя цель - установить sh старение на Идентификатор предмета. (примечание Дата создания одинакова для всех записей для указанного c Идентификатор элемента). Я отредактировал это, чтобы показать, что я пробовал, и результат, который я получаю.
Item Id State Created Date Date Severity
0 327863 New 2019-02-11 2019-10-03 1
9 327863 Approved 2019-02-11 2019-12-05 1
12 327863 Committed 2019-02-11 2019-12-26 1
16 327863 Done 2019-02-11 2020-01-23 1
27 327864 New 2019-02-11 2019-10-03 1
33 327864 Committed 2019-02-11 2019-11-14 1
42 327864 Done 2019-02-11 2020-01-16 1
53 341283 Approved 2019-03-11 2019-10-03 1
57 341283 Done 2019-03-11 2019-10-31 1
Я делаю следующее, чтобы объединить строки.
s = dfdr.groupby(['Item Id','Created Date', 'Severity']).cumcount()
df1 = dfdr.set_index(['Item Id','Created Date', 'Severity', s]).unstack().sort_index(level=1, axis=1)
df1=df1.reset_index()
print(df1[['Item Id', 'Created Date', 'Severity', 'State','Date']])
вывод смотрит на меня, чтобы показать то, что мне говорят, чтобы избежать цепной индексации.
Item Id Created Date Severity State Date
0 1 2 3 0 1 2 3
0 194795 2018-09-18 16:11:25.330 3.0 New Approved Committed Done 2019-10-03 2019-10-10 2019-10-17 2019-10-24
1 194808 2018-09-18 16:11:25.330 3.0 Duplicate NaN NaN NaN 2019-10-03 NaT NaT NaT
2 270787 2018-11-27 15:55:02.207 1.0 New Duplicate NaN NaN 2019-10-03 2019-10-10 NaT NaT
Чтобы использовать данные в графике, я считаю, что мне нужны не вложенные данные, а что-то вроде следующего, но не уверен, как туда добраться.
Item Id Created Date Severity New NewDate Approved AppDate Committed CommDate Done Done Date
123456 3/25/2020 3 New 2019-10-03 Approved 2019-11-05 NaN NaT Done 2020-02-17
После добавления pivot_table и reset_index для ответа Sikan, я ближе, но не получаю тот же вывод. Это вывод, который я получаю.
State Approved Committed Done Duplicate New
Item Id Created Date Severity
194795 2018-09-18 3.0 2019-10-10 2019-10-17 2019-10-24 NaT 2019-10-03
194808 2018-09-18 3.0 NaT NaT NaT 2019-10-03 NaT
Это конкретно мой код сейчас
df = pd.read_excel(r'C:\Users\xxx\Documents\Excel\DataSample.xlsx')
df = df.drop_duplicates(subset=['Item Id', 'State','Created Date'], keep='first')
df['Severity'] = df['Severity'].replace(np.nan,3)
df = pd.pivot_table(df, index=['Item Id', 'Created Date', 'Severity'], columns=['State'], values='Date', aggfunc=lambda x: x)
df.reset_index()
print(df)
Это вывод
State Approved Committed Done Duplicate New
Item Id Created Date Severity
194795 2018-09-18 3.0 2019-10-10 2019-10-17 2019-10-24 NaT 2019-10-03
194808 2018-09-18 3.0 NaT NaT NaT 2019-10-03 NaT
270787 2018-11-27 1.0 NaT NaT NaT 2019-10-10 2019-10-03
Спасибо