如何在具有不同数据类型的未初始化列上使用set_value?

时间:2017-05-04 12:54:10

标签: python pandas dataframe

我想知道set_value的以下行为。假设我有一个这样的数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame(index=list("ABC"))

Empty DataFrame
Columns: []
Index: [A, B, C]

我现在为其添加值,例如

df.set_value('A', 'col_1', np.nan)
df.set_value('B', 'col_1', 10)

它工作正常,但是,当我添加一个字符串

时它会崩溃
df.set_value('C', 'col_1', 'test')
  

ValueError:无法将字符串转换为float:test

然而,当我使用.loc

时,同样的效果非常好
df2 = pd.DataFrame(index=list("ABC"))
df2.loc['A', 'c1'] = np.nan
df2.loc['B', 'c1'] = 10
df2.loc['C', 'c1'] = 'test'

当我将set_value与初始化列(此处为:c_1)一起使用时:

df3 = pd.DataFrame(index=list("ABC"), columns=['c_1'])
df3.set_value('A', 'c_1', np.nan)
df3.set_value('B', 'c_1', 10)
df3.set_value('C', 'c_1', 'test')

为什么第一种方法失败而其他方法有效?什么是使第一种方法有效的最简单方法?

0 个答案:

没有答案