我有一个使用pandas和列标签的DataFrame,我需要编辑它来替换原始列标签.
我想更改A原始列名称所在的DataFrame 中的列名:
['$a', '$b', '$c', '$d', '$e']
Run Code Online (Sandbox Code Playgroud)
至
['a', 'b', 'c', 'd', 'e'].
Run Code Online (Sandbox Code Playgroud)
我将已编辑的列名存储在列表中,但我不知道如何替换列名.
我只是想知道我是否可以按位置重命名列名.我知道如何使用df.rename(columns = {})按实际名称重命名它们.
如果我不知道他们的名字并且只知道他们的职位,我该怎么办呢?
我的 json 结构如下:
{
"data": {
"item1": {
"field1": "foo",
"field2": "bar",
"field3": "baz"
},
"item2": {
"field1": "foo1",
"field2": "bar1",
"field3": "baz1"
},
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用标准化这个数据结构时pd.io.json.json_normalize,我得到一个包含 1 行的数据框,并且每个数据项重复列标题。如何使重复的列显示为行而不是列?
我目前得到这个
field1 | field2 | field3 | field1 |field2 | field3
foo | bar | baz | foo1 | bar1 | baz1
Run Code Online (Sandbox Code Playgroud)
我想要的是:
field1 | field2 | field3 |
foo | bar | baz
foo1 | bar1 | baz1
Run Code Online (Sandbox Code Playgroud) 试图理解这种行为(为什么会发生;如果是有意的话,那么以这种方式完成它的动机是什么)
所以我创建了一个数据帧
np.random.seed(0)
df = pd.DataFrame(np.random.random((4,2)))
0 1
0 0.548814 0.715189
1 0.602763 0.544883
2 0.423655 0.645894
3 0.437587 0.891773
Run Code Online (Sandbox Code Playgroud)
我可以像这样引用列
df.columns = ['a','b']
df.a
0
0 0.548814
1 0.602763
2 0.423655
3 0.437587
Run Code Online (Sandbox Code Playgroud)
我甚至可以制作,我认为这是一个新专栏
df.third = pd.DataFrame(np.random.random((4,1)))
Run Code Online (Sandbox Code Playgroud)
但df仍然是
df
0 1
0 0.548814 0.715189
1 0.602763 0.544883
2 0.423655 0.645894
3 0.437587 0.891773
Run Code Online (Sandbox Code Playgroud)
然而,df.third也存在(但我在Spyder的变量查看器中看不到它)
df.third
0
0 0.118274
1 0.639921
2 0.143353
3 0.944669
Run Code Online (Sandbox Code Playgroud)
如果我想添加第三列,我必须执行以下操作
df['third'] = pd.DataFrame(np.random.random((4,1)))
a b third
0 0.548814 0.715189 0.568045 …Run Code Online (Sandbox Code Playgroud)