python - 在 Pandas 数据框上应用列表

标签 python pandas list string-concatenation

我需要按列将列表应用于 pandas 数据框。要执行的操作是字符串连接。更具体一点:

我的输入:

df = pd.DataFrame([['a', 'b', 'c'], ['d', 'e', 'f']], columns=['Col1', 'Col2', 'Col3'])
lt = ['Prod1', 'Prod2', 'Prod3']

结果是:

>>>df
Col1 Col2 Col3
0    a    b    c
1    d    e    f

>>>lt
['Prod1', 'Prod2', 'Prod3']

此外,lt 的长度始终等于 df 的列数。

我想要的是这种类型的数据框:

res = pd.DataFrame([['Prod1a', 'Prod2b', 'Prod3c'], ['Prod1d', 'Prod2e', 'Prod3f']],
               columns=['Col1', 'Col2', 'Col3'])

给出:

>>>res
Col1    Col2    Col3
0  Prod1a  Prod2b  Prod3c
1  Prod1d  Prod2e  Prod3f

到目前为止,我已经能够解决循环行和列的问题,但我不会放弃有一种更优雅的方法来解决它的想法(也许是像 apply 这样的方法。

有人有建议吗?谢谢!

最佳答案

您可以执行广播字符串连接:

lt + df

     Col1    Col2    Col3
0  Prod1a  Prod2b  Prod3c
1  Prod1d  Prod2e  Prod3f

您还可以使用 numpy 的 np.char.add 函数。

df[:] = np.char.add(lt, df.values.astype(str))
df    
     Col1    Col2    Col3
0  Prod1a  Prod2b  Prod3c
1  Prod1d  Prod2e  Prod3f

第三,有列表理解选项。

df[:] = [[i + v for i, v in zip(lt, V)] for V in df.values.tolist()]
df

     Col1    Col2    Col3
0  Prod1a  Prod2b  Prod3c
1  Prod1d  Prod2e  Prod3f

关于python - 在 Pandas 数据框上应用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865348/

相关文章:

python - 2D Python 列表将有随机结果

python - 包括 .txt 文件中的列表。开始编辑并保存以供下次使用

c# - 如何在 C# 中将二维数组转换为二维列表

python - 查找numpy数组中多个元素的索引

python - **类(Class)辩护中的夸夸其谈。错误: "__init__() takes exactly 1 argument (2 given)"

python - 如何通过 Python API 获取 FB AD 帐户名?

python - 检查一行的值是否连续

python - 如何通过处理 nan 值添加新列

python - 更改 DataFrame 中的多列

python - 如何对索引和值的 Pandas 系列进行排序?