使用从现有列处理的值有效地将新列添加到 Pandas DataFrame?

Efficiently adding a new column to a Pandas DataFrame with values processed from an existing column?

我的 DataFrame 中有一个字符串列 foo。我需要创建一个新列 bar,其值是通过一系列字符串处理操作从相应的 foo 值派生的 - 一堆 str.split()s 和 str.join()s在这种特殊情况下。

最有效的方法是什么?

查看 pandas 数据帧的矢量化字符串方法。 http://pandas.pydata.org/pandas-docs/dev/text.html#text-string-methods

# You can call whatever vectorized string methods on the RHS
df['bar'] = df['foo']

例如

df = pd.DataFrame(['a c', 'b d'], columns=['foo'])
df['bar'] = df['foo'].str.split(' ').str.join('-')
print(df)

产量

   foo  bar
0  a c  a-c
1  b d  b-d

Pandas 可以为您做到这一点。一个简单的示例可能如下所示:

foo = ["this", "is an", "example!"]

df = pd.DataFrame({'foo':foo})
df['upper_bar'] = df.foo.str.upper()
df['lower_bar'] = df.foo.str.lower()
df['split_bar'] = df.foo.str.split('_')
print(df)

这会给你

       foo   upper_bar  lower_bar   split_bar
0      this      THIS      this      [this]
1     is an     IS AN     is an     [is an]
2  example!  EXAMPLE!  example!  [example!]

请参阅上面来自 Alex

的 link