Я не совсем уверен, что это то, что вы ищете, но если каждый столбец должен быть столбцом, и вы хотите, чтобы временные разницы в каждом столбце, то вам нужна разница в днях между каждой строкой, и я предполагаю, что первая строка должна иметь разницу в 0 дней (поскольку это отправная точка).
Также для столбцов с накоплением индекс используется для создания категорий, но в вашем случае вы хотите столбцы как категории, и каждый столбец должен состоять из различных значений индекса. Это означает, что вам нужно со временем перенести свою df.
Это решение довольно уродливо, но, надеюсь, оно поможет.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
"Initiative_160608": ['2009-05-15', '2009-05-22', '2009-05-28', '2009-06-17', '2009-06-17'],
"Initiative_160570": ['2009-05-15', '2009-05-22', '2009-05-28', '2009-06-17', '2009-06-17'],
"Initiative_160056": ['2006-04-07', '2006-04-26', '2006-05-11', '2006-05-17', '2006-05-26']})
df.index = ['Beschless_BR', 'Vorlage_BT', 'Beratung_BT', 'ABeschless_BT', 'Beschlussempf']
# convert everything to dates
df = df.apply(lambda x: pd.to_datetime(x, format="%Y-%m-%d"))
def get_days(x):
diff_list = []
for i in range(len(x)):
if i == 0:
diff_list.append(x[i] - x[i])
else:
diff_list.append(x[i] - x[i-1])
return diff_list
# get the difference in days, then convert back to numbers
df_diff = df.apply(lambda x: get_days(x), axis = 0)
df_diff = df_diff.apply(lambda x: x.dt.days)
# transpose the matrix so that each initiative becomes a stacked bar
df_diff = df_diff.transpose()
# replace 0 values with 0.2 so that the bars are visible
df_diff = df_diff.replace(0, 0.2)
df_diff.plot.bar(stacked = True)
plt.show()
![enter image description here](https://i.stack.imgur.com/zVf0l.png)