设置多索引不允许使用.loc访问?

问题描述 投票:0回答:1
import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
empty_row_index = ("zero_scan")
empty_row_df = pd.DataFrame({c: [None] for c in df.columns})
empty_row_df.index = [empty_row_index]
df2 = pd.concat([empty_row_df, df])result = df2.loc[df2.index[0], :]

有效

import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
empty_row_index = ("zero_scan",)
empty_row_df = pd.DataFrame({c: [None] for c in df.columns})
empty_row_df.index = [empty_row_index]
df2 = pd.concat([empty_row_df, df])result = df2.loc[df2.index[0], :]

按键错误。

注意

"zero_scan"
"zero_scan",

这是一个测试程序,我需要使用多索引的

"zero_scan",
版本。

如何纠正按索引对行的访问?

python pandas dataframe multi-index
1个回答
0
投票

在第一个示例中,您分配单个字符串“zero_scan”作为索引,创建单级索引。

并且,在第二个示例中,您分配一个元组(“zero_scan”)作为索引,创建多级索引。

使用

df2.loc[("zero_scan",), :]
,您可以正确访问具有多级索引的行

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
empty_row_index = ("zero_scan",)
empty_row_df = pd.DataFrame({c: [None] for c in df.columns})
empty_row_df.index = [empty_row_index]
df2 = pd.concat([empty_row_df, df])

# Access the row by index using the tuple format
result = df2.loc[("zero_scan",), :]
print(result)
© www.soinside.com 2019 - 2024. All rights reserved.