Python 在pandas中迭代数据帧的问题
我正在使用列表的内容填写数据框,例如:Python 在pandas中迭代数据帧的问题,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用列表的内容填写数据框,例如: desc_prep=[['aesthet', 'abod'], [['arb', 'abod'], ['forest', 'abod']]] col_names = ['desc_name','desc_avg_vector'] df_desc_prep = pd.DataFrame(columns=col_names) df_desc_prep['desc_name']=desc_prep 此时,我得到以下信息:
desc_prep=[['aesthet', 'abod'], [['arb', 'abod'], ['forest', 'abod']]]
col_names = ['desc_name','desc_avg_vector']
df_desc_prep = pd.DataFrame(columns=col_names)
df_desc_prep['desc_name']=desc_prep
此时,我得到以下信息:
desc_name
0 [aesthet, abod]
1 [[arb, abod], [forest, abod]]
使用iteritems迭代dataframe以获取列名称和内容为序列的元组时:
for index, value in df_desc_prep.iteritems():
print("index: ", index)#-->index: desc_name
print("value: ", value)#-->value: 0 [aesthet, abod]
print("value[0]:", value[0])#['aesthet', 'abod']
print("value[1]:", value[1])#[['arb', 'abod'], ['forest', 'abod']]
if isinstance(value[0], list):#->value[0]: ['aesthet', 'abod']
使用iterrows()迭代以获取每行的序列时:
for index, value in df_desc_prep.iterrows():
print("index: ", index)#-->index: 0
print("value: ", value)#-->value: desc_name [aesthet, abod]
if isinstance(value[0], list):#-->value[0]: ['aesthet', 'abod'], value[1]: IndexError: index out of bounds
我希望得到值[0]为aestet
,值[1]为abod
。相反,当获取值[1]时,我得到的是索引器:索引超出范围
当我在['aesett',abod']
和值[0]=['arb',abod']]上进行迭代时,我如何获得在数据帧上进行迭代并获得值[0]=aesett
的行为
...
for index, value in df_desc_prep.iterrows():
print(value[0][0])
print(value[0][1])
aesthet
abod
['arb', 'abod']
['forest', 'abod']
做得好!!!这是一种魅力。一个问题,为什么即使是一个列(一个系列)的数据帧,也必须指明列的名称?例如,col\u names=['desc\u name']df\u desc\u prep=pd.DataFrame(columns=col\u names)
@JuanPerez,这样您就可以看到,如果有更多的列,我们也可以访问column\u name元素。
for index, value in df_desc_prep.iterrows():
print(value['desc_name'][0])
print(value['desc_name'][1])
aesthet
abod
['arb', 'abod']
['forest', 'abod']