pandas 在所有行中插入python列表新建pd.dataframe列

tkqqtvp1  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(141)

我有python列表:

my_list = [1, 'V']

我有PD。 Dataframe :

A  B  C
0  f  v  b
1  f  i  n
2  f  i  m

我需要在 Dataframe 中创建值为my_list的新列:

A  B  C  D
0  f  v  b  [1, 'V']
1  f  i  n  [1, 'V']
2  f  i  m  [1, 'V']

据我所知,python列表可以是值,bc df.groupby加上apply "list":
一个三个三个一个
它的posible没有转换my_list类型?什么是最简单的方法来做到这一点?
我试过:

df['D'] = my_list
df['D'] = pd.Series(my_list)

但他们没有达到我的期望

rt4zxlrg

rt4zxlrg1#

您可以尝试使用:np.repeat,并将其repeat参数设置为行数,这可以从 Dataframe 的形状中找到。

my_list = [1, 'V']
df = pd.DataFrame({'col1': ['f', 'f', 'f'], 'col2': ['v', 'i', 'i'], 'col3': ['b', 'n', 'm']})
df['new_col'] = np.repeat(my_list, df.shape[0])

这将重复my_list的值,重复次数与DataFrame中的行数相同。

vof42yt1

vof42yt12#

你可以通过hstack用my_list创建一个新的数组,然后形成一个新的DataFrame。下面的代码已经过测试,工作正常。

import pandas as ph
a1 = np.array([['f','v','b'], ['f','i','n'], ['f','i','m']])
a2 = np.array([1, 'V']).repeat(3).reshape(2,3).transpose()
df = pd.DataFrame(np.hstack((a1,a2)))

相关问题