Ste*_*n G 5 python multiple-columns pandas
我正在尝试从 df 中多次复制一列,例如
df.head()
close
date
2015-09-23 17:00:00 1.3324
2015-09-23 17:01:00 1.3325
2015-09-23 17:02:00 1.3323
2015-09-23 17:03:00 1.3323
2015-09-23 17:04:00 1.3323
Run Code Online (Sandbox Code Playgroud)
从某个名称列表中,我想尽可能多地复制该列,只要我的列表中有名称:
list =['a','b','c']
Run Code Online (Sandbox Code Playgroud)
并得到
df.head()
close a b c
date
2015-09-23 17:00:00 1.3324 1.3324 1.3324 1.3324
2015-09-23 17:01:00 1.3325 1.3325 1.3325 1.3325
2015-09-23 17:02:00 1.3323 1.3323 1.3323 1.3323
2015-09-23 17:03:00 1.3323 1.3323 1.3323 1.3323
2015-09-23 17:04:00 1.3323 1.3323 1.3323 1.3323
Run Code Online (Sandbox Code Playgroud)
我试过
df[list] = df
Run Code Online (Sandbox Code Playgroud)
但列的长度必须与键的长度相同。谢谢你的帮助!
最简单的方法是迭代列表并为每个键创建一个新列(旁注:您可能应该避免用作list变量的名称,因为您将覆盖 native list):
keys = ['a','b','c']
for k in keys:
df[k] = df['close']
Run Code Online (Sandbox Code Playgroud)
如果您想在一行中完成此操作,而不需要循环,您可以执行以下操作:
keys = ['a','b','c']
df = df.join(pd.concat([df.close]*len(keys), keys=keys))
Run Code Online (Sandbox Code Playgroud)
从中间向外移动,[df.close]*len(keys)创建一个列表,其中包含与列表中的键一样多的原始数据帧列的副本。然后使用 将它们组合成一个数据帧pd.concat(),并使用列表 ( ) 设置列名称keys=keys。现在您已经有了一个包含重复列的数据框,您可以使用 将其添加到原始数据框df.join()。