我正在尝试使用多索引DataFrame中的一个索引创建一个新的DataFrame.
A B C
first second
bar one 0.895717 0.410835 -1.413681
two 0.805244 0.813850 1.607920
baz one -1.206412 0.132003 1.024180
two 2.565646 -0.827317 0.569605
foo one 1.431256 -0.076467 0.875906
two 1.340309 -1.187678 -2.211372
qux one -1.170299 1.130127 0.974466
two -0.226169 -1.436737 -2.006747
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要这样的事情:
In: df.ix[level="first"]
Run Code Online (Sandbox Code Playgroud)
和:
Out:
A B C
first
bar 0.895717 0.410835 -1.413681
0.805244 0.813850 1.607920
baz -1.206412 0.132003 1.024180
2.565646 -0.827317 0.569605
foo 1.431256 -0.076467 0.875906
1.340309 -1.187678 -2.211372
qux -1.170299 1.130127 0.974466
-0.226169 -1.436737 -2.006747
` …Run Code Online (Sandbox Code Playgroud) 我终于弄清楚了如何从DataFrame中使用_metadata,一切正常,除了我无法持久保存它,例如hdf5或json。我知道它是可行的,因为我复制了框架,而_metadata属性则复制了“ non _metadata”属性,但没有。
例
df = pandas.DataFrame #make up a frame to your liking
pandas.DataFrame._metadata = ["testmeta"]
df.testmeta = "testmetaval"
df.badmeta = "badmetaval"
newframe = df.copy()
newframe.testmeta -->outputs "testmetaval"
newframe.badmeta ---> raises attribute error
#json test
df.to_json(Path)
revivedjsonframe = pandas.io.json.read_json(Path)
revivedjsonframe.testmeta ---->raises Attribute Error
#hdf5 test
revivedhdf5frame.testmeta ---> returns None
Run Code Online (Sandbox Code Playgroud)
这个人/sf/answers/1800100361/说对他有用,但是我是这个网站(和熊猫)的新手,无法发布到该主题或直接问他。
我试图将密钥附加到postgres中的嵌套jsonb中,但是出现错误。本质上,我从一个json开始:
{"tel": "123", "name": "foo", "new_info": {"a": "bar"}}
Run Code Online (Sandbox Code Playgroud)
并且我想附加{"b", "baz"}到“ new_info”中,使得结果jsonb为:
{"tel": "123", "name": "foo", "new_info": {"a": "bar", "b":"baz"}}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令来获取原始的jsonb:
CREATE TABLE mytable (
ID serial NOT NULL PRIMARY KEY,
data jsonb NOT NULL
);
INSERT INTO mytable (data)
VALUES
(
'{ "name": "foo", "tel": "123"}'
);
UPDATE mytable SET data = jsonb_set(data, '{new_info}', '{"a":"bar"}', TRUE) WHERE data @> '{"name": "foo"}' ;
Run Code Online (Sandbox Code Playgroud)
并尝试使用以下命令来更新“ new_info”,该方法将不起作用:
WITH orig_new_info AS (SELECT data#>'{new_info}' FROM mytable WHERE data @> '{"name": "foo"}')
WITH updated_new_info …Run Code Online (Sandbox Code Playgroud)