将新行插入现有 pandas DataFrame 同时维护列数据类型并同时为未指定的列提供用户定义的填充值的最佳方法是什么?这是一个例子:
df = pd.DataFrame({
'name': ['Bob', 'Sue', 'Tom'],
'age': [45, 40, 10],
'weight': [143.2, 130.2, 34.9],
'has_children': [True, True, False]
})
Run Code Online (Sandbox Code Playgroud)
假设我想添加一条新记录,仅传递name和age。为了维护数据类型,我可以从 复制行df,修改值,然后附加df到副本,例如
columns = ('name', 'age')
copy_df = df.loc[0:0, columns].copy()
copy_df.loc[0, columns] = 'Cindy', 42
new_df = copy_df.append(df, sort=False).reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
但这会将bool列转换为对象。
这是一个非常棘手的解决方案,感觉不是执行此操作的“正确方法”:
columns = ('name', 'age')
copy_df = df.loc[0:0].copy()
missing_remap = {
'int64': 0,
'float64': 0.0,
'bool': False,
'object': ''
}
for c in set(copy_df.columns).difference(columns)):
copy_df.loc[:, c] …Run Code Online (Sandbox Code Playgroud)