pandas
库 DataFrame
如何给一个单元格赋值一个列表
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`