让我们创建一个空的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。为什么呢?
答案 0 :(得分:1)
df.append
创建了一个全新的DataFrame,因此它可以重新计算所有列的最佳类型。 df.loc
修改现有的DataFrame,因此它不会这样做。 (如果需要使它们 less 特定,它只会更改类型,例如,如果将字符串插入数字列,则转换为对象dtype。)