类型推断:df.append()vs df.loc []

时间:2016-01-12 21:11:47

标签: python pandas

让我们创建一个空的DataFrame:

import pandas as pd

df = pd.DataFrame(columns=['member', 'total'])

如果我们使用df将数据添加到df.append()

df = df.append({'member': 'some_string', 'total': pd.Timedelta(...)}, ignore_index=True)

我们会自动获取member列的对象dtype和total列的timedelta64 [ns] dtype。

现在让我们在创建DataFrame时指定一个索引,然后使用df.loc[]添加我们的数据:

df = pd.DataFrame(index=some_index, columns=['member', 'total'])

df.loc[index_label] = {'member': 'some_string', 'total': pd.Timedelta(...)}

不幸的是,在这种情况下,我们会看到total列的对象dtype。为什么呢?

1 个答案:

答案 0 :(得分:1)

df.append创建了一个全新的DataFrame,因此它可以重新计算所有列的最佳类型。 df.loc修改现有的DataFrame,因此它不会这样做。 (如果需要使它们 less 特定,它只会更改类型,例如,如果将字符串插入数字列,则转换为对象dtype。)