我想将常量numpy数组值分配给pandas dataframe列。
以下是我的尝试:
import pandas as pd
import numpy as np
my_df = pd.DataFrame({'col_1': [1,2,3], 'col_2': [4,5,6]})
my_df['new'] = np.array([]) # did not work
my_df['new'] = np.array([])*len(df) # did not work
这是有效的:
my_df['new'] = my_df['new'].apply(lambda x: np.array([]))
我很好奇为什么它适用于简单的标量,但不适用于numpy数组。是否有更简单的方法来分配numpy数组值?
答案 0 :(得分:2)
您的“新”列将包含数组,因此它必须是对象类型列。
初始化它的最简单方法是:
my_df = pd.DataFrame({'col_1': [1,2,3], 'col_2': [4,5,6]})
my_df['new']=None
然后您可以根据需要填写它。例如:
for index,(a,b,_) in my_df.iterrows():
my_df.loc[index,'new']=np.arange(a,b)
#
# col_1 col_2 new
# 0 1 4 [1, 2, 3]
# 1 2 5 [2, 3, 4]
# 2 3 6 [3, 4, 5]