如何在pandas中更改数据框中的列值?

时间:2017-09-11 17:54:01

标签: python-3.x pandas data-manipulation

我正在尝试修改数据框[列]中的值。我正在使用slugify来更改列中的值。

df[column][0] = "Hello-World"
df[column][1] = "Hi There!"

df[column] type is series

slugify后的预期值

df[column][0] = "hello-world"
df[column][1] = "hi_there"

我尝试了几次迭代,但无法使其正常工作

  df[column_name] = slugify.slugify(str(df[column_name]))

上面的结果是将所有值连接成一个长字符串并分配给列中的每一行。

我也尝试了以下但是得到了与上面相同的结果。

df[column_name] = slugify.slugify((df[column_name].to_string(index=False,header=False)))

任何建议我如何对列中的每个值应用slugify。 感谢

3 个答案:

答案 0 :(得分:2)

您可以直接apply slugify功能

df.column1.apply(slugify.slugify)

在你的情况下产生

0    hello-world
1       hi-there
Name: column1, dtype: object

你最初的尝试

 slugify.slugify(str(df[column_name]))

显然不会起作用,因为str(df[column_name])会为整个列生成一个字符串表示形式,然后进行细分。

答案 1 :(得分:1)

你能试试吗

from slugify import slugify
df['column_name'] = df['column'].apply(lambda x :slugify(x))

答案 2 :(得分:1)

我会给你一个更好的答案。 更好,因为不需要外部库。

df['col'] = df.col.replace(' ','-',regex=True)

regex = True 是诀窍