`pandas` 库 `DataFrame` 如何给一个单元格赋一个列表

pandasDataFrame 如何给一个单元格赋值一个列表

DataFrame一般情况下一列为同一种数据类型使用 astype 方法可以查看

import pandas as pd

df = pd.DataFrame()
df['q'] = [1, 2, 3, 4]
df['e'] = ['q', 'w', 'e', 'r']

print(df,'\n')
print(df.dtypes)

输出:

   q  e
0  1  q
1  2  w
2  3  e
3  4  r

q     int64
e    object
dtype: object

可以看到df['q'],df['e']数据类型分别为int64,object,当给df['q']列某个单元格赋值列表时会报错,但是给df['e']某个单元格赋值列表却不会报错

df.at[1, 'q'] = [6, 7, 8]  # 报错:ValueError: Must have equal len keys and value when setting with an iterable
df.at[1, 'e'] = [6, 7, 8]  # 输出df会发现df已成功改变

因为数据列为object类型时才能给单元格赋值列表,因此需要先改变该列的数据类型为object再赋值

df = df.astype({'q': 'object'})
df.at[1, 'q'] = [6, 7, 8]  # 注意要用df.at,用df.loc赋值时仍会报错

# 此时打印df会发现df['q']列已改变,同时该列的数据类型也变为`object`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值