【问题标题】:pandas assume integer type data and would not allow set textpandas 采用整数类型数据,不允许设置文本
【发布时间】:2018-12-21 18:42:51
【问题描述】:

我无法在 pandas 数据框中设置新值,除非它是整数。

我正在学习 pandas,并尝试在 jupyter 笔记本中构建尽可能多的 .loc 和 .iloc 案例,我遇到了第一个我不明白的问题。我可以使用 .loc 将 pandas 数据框的特定值设置为一个新值,只要它是一个整数。否则报错为什么?

onp=np.arange(1,21,1).reshape(4,5)
oindex=['concept1','concept2','concept3','concept4',]
ohead=['ep1','ep2','ep3','ep5','ep5']
data=onp

mydf=pd.DataFrame(data,index=oindex, columns=ohead)
print(mydf.loc['concept2','ep3'])

# this works fine:
mydf.loc['concept2','ep3']=233

# this does not work:
mydf.loc['concept2','ep3']='hallo'  

为什么python假设数据框的值是整数? 我该怎么做才能将值更改为一种变体。我需要在熊猫随机分布的地方有文本或整数。 谢谢

顺便说一句,通过的错误是: "ValueError: 缓冲区的维数错误(预期为 1,得到 0)"

【问题讨论】:

    标签: python pandas type-conversion


    【解决方案1】:

    一旦您将数据类型更改为object,它将允许

    mydf=mydf.astype(object)
    mydf.loc['concept2','ep3']='hallo' 
    mydf
    Out[181]: 
             ep1 ep2    ep3 ep5 ep5
    concept1   1   2      3   4   5
    concept2   6   7  hallo   9  10
    concept3  11  12     13  14  15
    concept4  16  17     18  19  20
    

    【讨论】:

    • 谢谢。有用。将在两分钟内打分。
    • @JoseBerlines yw :-) 编码愉快,也不要忘记点赞 :-)
    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多