更新列值作为循环遍历数据框行

时间:2019-01-31 19:00:18

标签: python pandas dataframe

我试图获取链接并通过TinyURL推送它们。.我有一个包含“登录链接”列的数据框,我想单独获取并添加到{Tiny URL“列中,tiny_urlize链接。 / p>

for index, row in df.iterrows():
    df.loc[index, 'Tiny Url'] = tiny_urlize(row['Login Link'])

我遇到的错误是这样的:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

但这正是我在做什么。我想念什么吗?

2 个答案:

答案 0 :(得分:2)

由于许多不同的原因,可能会出现此错误,例如,常见的情况是df是另一个数据帧的切片。我怀疑如果在迭代之前写了df = df.copy(),就不会收到错误消息。

您还可以通过将其写为apply来简化和加快表达:

df['Tiny Url'] = df['Login Link'].apply(tiny_urlize)

我相信这也会阻止警告

答案 1 :(得分:0)

问题在于,您正在循环时使用loc更新df的值(本质上是切片)。尝试

for index, row in df.iterrows():
    row['Tiny Url'] = tiny_urlize(row['Login Link'])

此外,大熊猫具有内置功能,这些功能对于这类事情非常有效,其中之一就是apply

df['Tiny Url'] = df['Login Link'].apply(tiny_urlize)