<p>我想你的for循环只需要一个索引</p>
<p>尝试:</p>
<p><code>for x in range(0, len(df)-1):</code></p>
<p>取而代之的是</p>
<p><strong>编辑:</strong>
有道理的是:</p>
<p><code>new_fruit = old_fruit[x+1]</code></p>
<p>并没有给出预期的结果,老嫒果不是一个列表而是一个字符串。我想你想要的是:</p>
<p><code>new_fruit = df.fruit[x+1]</code></p>
<p><strong>编辑(2):</strong></p>
<p>您应该添加:
<code>df.NewCol[x+1] = 'fruit' + str(x)</code></p>
<p>我的工作脚本是:</p>
<pre><code> import pandas as pd
import numpy
df = pd.read_csv('data.csv', header=0, dtype='unicode')
df_count = df['fruit'].value_counts()
df.sort_values(['fruit'], ascending=True, inplace=True) #sorting the column
#fruit
df.reset_index(drop=True, inplace=True)
#print(df)
x = 0 #starting my counter values or position in the column
#old_fruit = df.fruit[x]
#new_fruit = df.fruit[x+1]
df.loc[:,'NewCol'] = 0 # to create the new column
print(df)
for x in range(0, len(df)-1):
old_fruit = df.fruit[x] #Starting fruit
new_fruit = df.fruit[x+1] #next fruit to compare with
if old_fruit == new_fruit:
#print(x)
#print(old_fruit, new_fruit)
df.NewCol[x] = 'fruit' + str(x)
df.NewCol[x+1] = 'fruit' + str(x)#if they are the same, put
#fruit[x] or fruit0 in the current row
else:
print("Not the Same")
#print(x)
#print(old_fruit, new_fruit)
df.NewCol[x+1] = 'fruit' +str(x+1) #if they are the same,
#put fruit[x+1] or fruit1 in the current row
print(df)
</code></pre>