我想知道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')
为什么第一种方法失败而其他方法有效?什么是使第一种方法有效的最简单方法?