【发布时间】:2021-10-27 05:23:38
【问题描述】:
当我想将变量保存在数据框的特定单元格中时,我不理解 .loc 或 .at 的行为。有人可以帮我理解吗?
我失败的工作示例:
import pandas as pd
import numpy as np
print(pd.__version__)
from platform import python_version
print(python_version())
df=pd.DataFrame(index=[0,1,2,3],columns=['A','B'])
df = pd.DataFrame({'a':[np.array([1,2,3]), np.array([4,5,6]), np.array([7,8,9]), np.array([10,11,12]), np.array([13,14,15])],'b':[5,5,12,123,6]})
display(df)
df.loc[0,'c']='string 0'
df.loc[1,'c']='string 1'
df.loc[2,'c']='string 2'
df.loc[3,'c']='string 3'
print(df.index.values)
testdata=np.array(np.arange(0,3648,1),dtype=np.float32)
print('----------testdata----------')
print(type(testdata))
print(testdata.dtype)
print(testdata.shape)
print('----------file_handle----------')
file_handle=np.array([1],dtype=np.int64)
print(file_handle)
print(type(file_handle))
print(file_handle.dtype)
if not 'new_column' in df.columns:
df=df.assign(new_column=None)
display(df)
df.loc[file_handle,'new_column']=[testdata]
display(df)
结果:ValueError: Must have equal len keys and value when setting with an ndarray
但是使用df.at[file_handle[0],'new_column']=[testdata]、df.at[1,'new_column']=[testdata] 可以。我不明白。使用df.loc[file_handle[0],'new_column']=testdata 也不起作用。
在我的代码的其他地方,我可以使用行索引[1] 将字典或标量分配到一个特定位置,但不能使用 numpy 数组。
感谢您的解释和洞察。我会很感激了解,如何使用 .loc 和 at 以及它们接受哪些变量,既可以作为行索引,也可以作为存储在数据框中的项目。
【问题讨论】:
标签: python arrays pandas dataframe numpy