将索引值设置为pd.DataFrame`index`参数可从列中删除数据

时间:2019-09-16 13:24:54

标签: python pandas

当我使用自定义索引值创建新的DataFrame时,它将使用NaN / NaT值替换列中的数据。

我也尝试将pd.Index分配为index参数,结果是相同的。

pd.DataFrame(
    data={
        "date": pd.Series([datetime(2000, 1, 2)]),
        "duration": pd.Series([datetime(1970, 1, 1, 0, 5)]),
    }
    index = [1] 
    )

代替:

    date    duration
1   2000-01-02  1970-01-01 00:05:00

我收到:

    date    duration
1   NaT NaT

这是一个错误吗?

我用的是熊猫0.25.0

1 个答案:

答案 0 :(得分:1)

Series构造函数中删除DataFrame,因为它们的默认索引为0,与index of DataFrame类似,因此返回的缺失值(索引必须匹配):

df = pd.DataFrame(
    data={
        "date": [datetime(2000, 1, 2)],
        "duration": [datetime(1970, 1, 1, 0, 5)],
    },
    index = [1] 
    )

print (df)
        date            duration
1 2000-01-02 1970-01-01 00:05:00

详细信息

print (pd.Series([datetime(2000, 1, 2)]))
0   2000-01-02
dtype: datetime64[ns]

因此,如果需要Series,也必须将索引设置为1

df = pd.DataFrame(
    data={
        "date": pd.Series([datetime(2000, 1, 2)], index = [1]),
        "duration": pd.Series([datetime(1970, 1, 1, 0, 5)],index = [1]),
    },
    index = [1] 
    )

或在DataFrame中删除默认的0索引:

df = pd.DataFrame(
    data={
        "date": pd.Series([datetime(2000, 1, 2)]),
        "duration": pd.Series([datetime(1970, 1, 1, 0, 5)]),
    },
    )

print (df)
        date            duration
0 2000-01-02 1970-01-01 00:05:00