Python 迭代给定的数据帧

Python 迭代给定的数据帧,python,pandas,numpy,dictionary,for-loop,Python,Pandas,Numpy,Dictionary,For Loop,我正在使用循环进行迭代: df = 0 20 1 19 2 18 3 17 4 16 我有一个号码。但是我需要/想要得到数据帧,数据帧的长度为df lendf您几乎不需要迭代数据帧。列基本上是NumPy数组,具有类似于“elementwise”的数组超能力。您也不需要迭代NumPy数组 可能将您的任务表述为一个函数,并在数据帧或序列上使用apply方法。这将函数“应用”到列中的每个项,而不需要循环 但是,如果您真的只有一个这样的列,为什么还要使用数据帧呢?只需使用NumP

我正在使用循环进行迭代:

df = 
0   20
1   19
2   18
3   17
4   16

我有一个号码。但是我需要/想要得到数据帧,数据帧的长度为df lendf

您几乎不需要迭代数据帧。列基本上是NumPy数组,具有类似于“elementwise”的数组超能力。您也不需要迭代NumPy数组

可能将您的任务表述为一个函数,并在数据帧或序列上使用apply方法。这将函数“应用”到列中的每个项,而不需要循环

但是,如果您真的只有一个这样的列,为什么还要使用数据帧呢?只需使用NumPy数组或使用列的values属性即可。

您需要使用iterrows,正如@code在上面的评论中指出的那样

以下是一个例子:

其中df为:

for k in df:
    af = AffinityPropagation(preference=k).fit(X)
    labels = af.labels_
    score = silhouette_score(frechet, labels)
    print("Preference: {0}, Silhouette score: {1}".format(k,score))
然后使用您的方法:

df = pd.DataFrame({0:range(20,0,-1)})
输出:

for k in df:
    print(k)
for _,k in df.iterrows():
    print(k.iloc[0])
此零是数据帧的列标题。您正在迭代数据帧列名

使用iErrors:

输出:

for k in df:
    print(k)
for _,k in df.iterrows():
    print(k.iloc[0])

这里,您将数据帧的每一行作为序列,使用iloc,您将获得本例中行中的第一个也是唯一的值。

迭代数据帧意味着迭代其列-并且只有一个…我的意思是,df的每一个值都可能是指df中的索引k。iterrows@Mamed我知道,df中的k不符合你的意思,但符合我的解释-