使用所有索引旋转 Table
Pivot Table with All the Index
我正在使用 python pandas 从 df 创建一个枢轴 table。 df 看起来像:
缺少值的字段是:始发城市、装运日期、体积和着陆日期。请注意,Landing Date 是 Shipment date 和 TAT 的总和。
我想要得到的输出是这样的:
上面的输出我有以下代码:
pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0)
我得到的实际输出是
这里的问题是我的代码删除了 DC = DLT
,因为它在旋转时缺少值。有什么想法吗?
您可以使用 ffill
,与 Series.fillna
和 method='ffill'
相同:
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR NaN NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT NaN NaN
6 DLT NaN NaN
df['Landing date'] = df['Landing date'].ffill()
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR 03-09-16 NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT 06-09-16 NaN
6 DLT 06-09-16 NaN
df1 = pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0)
df1.index.name = None
df1.columns.name = None
print (df1)
02-09-16 03-09-16 05-09-16 06-09-16
BOY 0 0 60 14
DLT 0 0 0 0
MAR 50 98 0 0
您可以 fillna
通过第 Landing date
列中的第一个非 NaN 值:
val = df['Landing date'].dropna().iloc[0]
print (val)
02-09-16
df['Landing date'] = df['Landing date'].fillna(val)
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR 02-09-16 NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT 02-09-16 NaN
6 DLT 02-09-16 NaN
我正在使用 python pandas 从 df 创建一个枢轴 table。 df 看起来像:
缺少值的字段是:始发城市、装运日期、体积和着陆日期。请注意,Landing Date 是 Shipment date 和 TAT 的总和。
我想要得到的输出是这样的:
上面的输出我有以下代码:
pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0)
我得到的实际输出是
这里的问题是我的代码删除了 DC = DLT
,因为它在旋转时缺少值。有什么想法吗?
您可以使用 ffill
,与 Series.fillna
和 method='ffill'
相同:
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR NaN NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT NaN NaN
6 DLT NaN NaN
df['Landing date'] = df['Landing date'].ffill()
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR 03-09-16 NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT 06-09-16 NaN
6 DLT 06-09-16 NaN
df1 = pd.pivot_table(df, values='Volume', index=['DC'], columns=['Landing date'], aggfunc=np.sum, fill_value = 0)
df1.index.name = None
df1.columns.name = None
print (df1)
02-09-16 03-09-16 05-09-16 06-09-16
BOY 0 0 60 14
DLT 0 0 0 0
MAR 50 98 0 0
您可以 fillna
通过第 Landing date
列中的第一个非 NaN 值:
val = df['Landing date'].dropna().iloc[0]
print (val)
02-09-16
df['Landing date'] = df['Landing date'].fillna(val)
print (df)
DC Landing date Volume
0 MAR 02-09-16 50.0
1 MAR 03-09-16 98.0
2 MAR 02-09-16 NaN
3 BOY 05-09-16 60.0
4 BOY 06-09-16 14.0
5 DLT 02-09-16 NaN
6 DLT 02-09-16 NaN