从 1 列创建多列 pandas
create multiple columns from 1 column 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
从某个名称列表中,我想复制该列的次数与我的列表中的名称一样多:
list =['a','b','c']
并得到
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
我试过了
df[list] = df
但列的长度必须与键的长度相同。感谢您的帮助!
最简单的方法是遍历列表并为每个键创建一个新列(旁注:您应该避免使用 list
作为变量的名称,因为您会覆盖原生 list
):
keys = ['a','b','c']
for k in keys:
df[k] = df['close']
如果你想在一行中完成,而不是循环,你可以执行以下操作:
keys = ['a','b','c']
df = df.join(pd.concat([df.close]*len(keys), keys=keys))
从中间向外移动,[df.close]*len(keys)
创建一个列表,其中包含与列表中的键一样多的原始数据框列的副本。然后使用 pd.concat()
将这些组合成一个数据框,列名与您的列表一起设置 (keys=keys
)。现在您有了一个包含重复列的数据框,您可以使用 df.join()
.
将其添加到原始数据框中
您可以使用 concat
:
li = ['a','b','c']
df1 = pd.concat([df['close']]*(len(li)+1), axis=1, keys=['close'] + li)
print (df1)
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
我正在尝试从 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
从某个名称列表中,我想复制该列的次数与我的列表中的名称一样多:
list =['a','b','c']
并得到
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
我试过了
df[list] = df
但列的长度必须与键的长度相同。感谢您的帮助!
最简单的方法是遍历列表并为每个键创建一个新列(旁注:您应该避免使用 list
作为变量的名称,因为您会覆盖原生 list
):
keys = ['a','b','c']
for k in keys:
df[k] = df['close']
如果你想在一行中完成,而不是循环,你可以执行以下操作:
keys = ['a','b','c']
df = df.join(pd.concat([df.close]*len(keys), keys=keys))
从中间向外移动,[df.close]*len(keys)
创建一个列表,其中包含与列表中的键一样多的原始数据框列的副本。然后使用 pd.concat()
将这些组合成一个数据框,列名与您的列表一起设置 (keys=keys
)。现在您有了一个包含重复列的数据框,您可以使用 df.join()
.
您可以使用 concat
:
li = ['a','b','c']
df1 = pd.concat([df['close']]*(len(li)+1), axis=1, keys=['close'] + li)
print (df1)
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