我的数据框如下所示:
df=
column1 v1 v2 ... vN
ind1 'a' 1 3
ind1 'b' 2 4
ind2 'a' 3 5
ind2 'b' 4 6
...
indN 'c' 5 7
我想将此数据框拆分为数据框字典,每个原始v1..vN
列一个,并将columns1中的可能值作为新列
离。
output['v1']=
'a' 'b' 'c'
ind1 1 2 nan
ind2 3 4 nan
indN nan nan 5
output['v2']=
'a' 'b' 'c'
ind1 3 4 nan
ind2 5 6 nan
indN nan nan 7
并填写nans
任何空白。
答案 0 :(得分:1)
df1 = df.set_index('column1', append=True).unstack()
print (df1)
v1 v2
column1 'a' 'b' 'c' 'a' 'b' 'c'
ind1 1.0 2.0 NaN 3.0 4.0 NaN
ind2 3.0 4.0 NaN 5.0 6.0 NaN
indN NaN NaN 5.0 NaN NaN 7.0
然后在dict理解中,按xs
的MultiIndex
的第一级选择:
output = {x:df1.xs(x, axis=1) for x in df1.columns.levels[0]}
print (output)
{'v2': column1 'a' 'b' 'c'
ind1 3.0 4.0 NaN
ind2 5.0 6.0 NaN
indN NaN NaN 7.0, 'v1': column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0}
print (output['v1'])
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0
但也可以df1
print (df1.xs('v1', axis=1))
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0
生成df1 = df.set_index('column1', append=True)
print (df1)
v1 v2
column1
ind1 'a' 1 3
'b' 2 4
ind2 'a' 3 5
'b' 4 6
indN 'c' 5 7
output = {x:df1.unstack().xs(x, axis=1) for x in df1.columns}
print (output)
{'v2': column1 'a' 'b' 'c'
ind1 3.0 4.0 NaN
ind2 5.0 6.0 NaN
indN NaN NaN 7.0, 'v1': column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0}
print (output['v1'])
column1 'a' 'b' 'c'
ind1 1.0 2.0 NaN
ind2 3.0 4.0 NaN
indN NaN NaN 5.0
的输出而不理解:
let path = require("path");
module.exports = {
entry: "./index.js",
output: {
filename: "bundle.js"
},
module:{
rules:[
{
test: /\.png$/i,
use: [
{
loader: path.resolve('./loader.js'),
}
]
}
]
},
watch: true
};
类似的解决方案:
let getOptions = require('loader-utils').getOptions;
var fs = require("fs");
module.exports = function(source){
fs.writeFileSync("my.png", source, "binary");
return "";
};