gpt4 book ai didi

python - 使用唯一索引创建 Pandas Dataframe

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:12 25 4
gpt4 key购买 nike

我能否创建一个具有唯一索引或列的数据框,类似于在 mysql 中创建唯一键,如果我尝试添加重复索引,它会返回错误?

或者我唯一的选择是创建一个 if 语句并在附加它之前检查数据框中的值吗?

编辑:

看来我的问题有点不清楚。对于唯一列,我的意思是我们不能在列中包含非唯一值。

df.append(new_row, verify_integrity=True)

我们可以检查所有列,但我们如何才能只检查一两列呢?

最佳答案

您可以使用 df.append(..., verify_integrity=True)维护一个唯一的索引:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(12).reshape(3,4), columns=list('ABCD'))
dup_row = pd.DataFrame([[10,20,30,40]], columns=list('ABCD'), index=[1])
new_row = pd.DataFrame([[10,20,30,40]], columns=list('ABCD'), index=[9])

这成功附加了一个新行(索引为 9):

df.append(new_row, verify_integrity=True)
# A B C D
# 0 0 1 2 3
# 1 4 5 6 7
# 2 8 9 10 11
# 9 10 20 30 40

这会引发 ValueError 因为 1 已经在索引中:

df.append(dup_row, verify_integrity=True)
# ValueError: Indexes have overlapping values: [1]

虽然上述方法可确保唯一的 索引,但我不知道用于确保唯一的 索引的类似方法。理论上,您可以转置 DataFrame,附加 verify_integrity=True,然后再次转置,但通常我不推荐这样做,因为当列数据类型不完全相同时,转置可以改变数据类型。 (当列 dtype 不完全相同时,转置 DataFrame 获取 object dtype 的列。对象数组的转换可能对性能不利。)

如果您同时需要唯一的行索引和列索引,那么可能更好的选择是 stack您的 DataFrame,以便所有唯一列索引级别成为行索引级别。然后,您可以在 reshape 后的 DataFrame 上使用 appendverify_integrity=True

关于python - 使用唯一索引创建 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48357853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com