假设我有 3 个数据帧,
df_1
代表收入
Year TSLA MSFT AVY
2019 851 200 112.8
2018 725 150 92.6
df_2
代表一些其他收入
Year TSLA MSFT AVY
2019 10 13 17
2018 11 14 18
和 df_3
代表费用
Year TSLA MSFT AVY
2019 110 213 317
2018 111 214 418
获得以下 df 的代码是什么?
TSLA MSFT AVY
Year revenues other_revenues expenses revenues other_revenues expenses revenues other_revenues expenses
2019 851 10 110 200 13 213 112.8 17 317
2018 725 11 111 150 14 214 92.6 18 418
多索引形式的列在哪里?
谢谢
答案 0 :(得分:2)
使用 concat
与 DataFrame.swaplevel
和 DataFrame.sort_index
对 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var treeViewItems = (TreeViewItem) value;
if (treeViewItems == null) return false;
return treeViewItems.Items.Count != 0 && treeViewItems.Items.Cast<TreeViewItem>()
.All(item => item.Foreground.Equal(Colors.Gray));
}
进行排序:
private bool CheckContainerVisibility(TreeViewItem container)
{
var grayChild = 0;
foreach (TreeViewItem item in container.Items)
if (item.Foreground.Equal(_viewModel.HiddenColor))
grayChild++;
else if (!item.Items.IsEmpty)
if (CheckContainerVisibility(item))
grayChild++;
if (container.Items.Count != grayChild) return false;
container.Foreground = new SolidColorBrush(_viewModel.HiddenColor);
return true;
}
编辑:对于像原始添加 DataFrame.reindex
由 MultiIndex.from_product
来自 MultiIndex
的第一级的唯一值的顺序:
#if not Year is index first create it
L = [x.set_index('Year') for x in [df_1, df_2, df_3]]
df = (pd.concat(L,
axis=1,
keys=('evenues', 'other_revenues', 'expenses'))
.swaplevel(1, 0, axis=1)
.sort_index(axis=1))
print (df)
AVY MSFT TSLA \
evenues expenses other_revenues evenues expenses other_revenues evenues
Year
2019 112.8 317 17 200 213 13 851
2018 92.6 418 18 150 214 14 725
expenses other_revenues
Year
2019 110 10
2018 111 11