使用熊猫

时间:2019-04-16 03:13:50

标签: python pandas

我有一个看起来像这样的数据框,

                     img
0 6479965c_2019_04_15_20_26_25_90.jpg
1 6479965c_2019_04_15_20_26_25_92.jpg
2 6479965c_2019_04_15_20_26_25_93.jpg
3 6479965c_2019_04_15_20_26_25_96.jpg
4 6479965c_2019_04_15_20_26_26_10.jpg
....

如何将每个值替换为

"foo" + str(counter) + ".jpg"

我迭代了

counter = 1
for i in df['img']:
    i = "foo_" + str(counter)  + ".jpg"
    counter += 1

但是它不起作用。

2 个答案:

答案 0 :(得分:2)

使用以下代码,熊猫可以做到:

df['img'] = 'foo_' + (df.index + 1).astype(str) + '.jpg'

现在:

print(df)

输出:

            img
0 foo_1.jpg.jpg
1 foo_2.jpg.jpg
2 foo_3.jpg.jpg
3 foo_4.jpg.jpg
4 foo_5.jpg.jpg

答案 1 :(得分:0)

您的问题是设置i不会更改原始值,请看下面的示例,我需要获取要设置的当前元素的索引,因此我将使用枚举并且为了提高效率而不会使用常量变量,而不是添加到索引值

for index, item in enumerate(df['img']):
    df['img'][index] = "foo_" + str(index+1)  + ".jpg

编辑:刚意识到您有字典,所以您不必使用枚举

for index, item in df['img'].items():
    df['img'][index] = "foo_" + str(index+1)  + ".jpg