从列表创建数据帧时,是否可以将索引设置为其中一个值?
import pandas as pd
tmp = [['a', 'a1'], ['b',' b1']]
df = pd.DataFrame(tmp, columns=["First", "Second"])
First Second
0 a a1
1 b b1
Run Code Online (Sandbox Code Playgroud)
以及我希望它看起来如何:
First Second
a a a1
b b b1
Run Code Online (Sandbox Code Playgroud)
tdy*_*tdy 13
set_axis要将任意值设置为索引,最佳实践是使用set_axis:
df = df.set_axis([\'idx1\', \'idx2\'])\n\n# First Second\n# idx1 a a1\n# idx2 b b1\nRun Code Online (Sandbox Code Playgroud)\nset_index(列表与数组)也可以将任意值传递给set_index,但请注意传递列表与数组之间的区别:
list \xe2\x80\x94set_index将这些列指定为索引:
df.set_index([\'First\', \'First\'])\n\n# Second\n# First First \n# a a a1\n# b b b1\nRun Code Online (Sandbox Code Playgroud)\narray (Series/Index/ndarray) \xe2\x80\x94set_index将这些值指定为索引:
df = df.set_index(pd.Series([\'First\', \'First\']))\n\n# First Second\n# First a a1\n# First b b1\nRun Code Online (Sandbox Code Playgroud)\n请注意,将数组传递给在开发人员中非常有争议set_index,甚至可能被弃用。
df.index直接修改呢?直接修改属性很好,也经常使用,但使用方法有其优点:
\n方法提供更好的错误检查,例如:
\ndf = df.set_axis([\'idx1\', \'idx2\', \'idx3\'])\n\n# ValueError: Length mismatch: Expected axis has 2 elements, new values have 3 elements\nRun Code Online (Sandbox Code Playgroud)\ndf.index = [\'idx1\', \'idx2\', \'idx3\']\n\n# No error despite length mismatch\nRun Code Online (Sandbox Code Playgroud)\n方法可以链接起来,例如:
\ndf.some_method().set_axis([\'idx1\', \'idx2\']).another_method()\nRun Code Online (Sandbox Code Playgroud)\nAle*_*der 10
>>> pd.DataFrame(tmp, columns=["First", "Second"]).set_index('First', drop=False)
First Second
First
a a a1
b b b1
Run Code Online (Sandbox Code Playgroud)
如果您不想要索引名称:
df = pd.DataFrame(tmp, columns=["First", "Second"], index=[i[0] for i in tmp])
Run Code Online (Sandbox Code Playgroud)
结果:
First Second
a a a1
b b b1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18129 次 |
| 最近记录: |