Pandas将列类型从列表转换为np.array

iovurdzv  于 2023-11-15  发布在  其他
关注(0)|答案(2)|浏览(182)

我尝试将一个函数应用到Pandas数据框,这样的函数需要两个np.数组作为输入,它使用定义良好的模型来拟合它们。
关键是我不能从所选列开始应用这个函数,因为它们的“行”包含从JSON文件中读取的列表,而不是np. array。
现在,我尝试了不同的解决方案:

  1. #Here is where I discover the problem
  2. train_df['result'] = train_df.apply(my_function(train_df['col1'],train_df['col2']))
  3. #so I've tried to cast the Series before passing them to the function in both these ways:
  4. X_col1_casted = trai_df['col1'].dtype(np.array)
  5. X_col2_casted = trai_df['col2'].dtype(np.array)

字符串
坏了

  1. X_col1_casted = trai_df['col1'].astype(np.array)
  2. X_col2_casted = trai_df['col2'].astype(np.array)


坏了

  1. X_col1_casted = trai_df['col1'].dtype(np.array)
  2. X_col2_casted = trai_df['col2'].dtype(np.array)


不起作用。
我现在想做的是一个很长的过程,比如:
从未转换的column-series开始,将它们转换为list(),对它们进行迭代,将函数应用于np.array()的单个元素,并将结果追加到一个临时列表中。完成后,我将把这个列表转换为一个新的列。(显然,我不知道它是否有效)
你们谁知道怎么帮我?
编辑:我补充一个例子来说明:
该函数假设有两个np. arrays作为输入。现在它有两个列表,因为它们是从一个json文件中检索到的。情况是这样的:

  1. col1 col2 result
  2. [1,2,3] [4,5,6] [5,7,9]
  3. [0,0,0] [1,2,3] [1,2,3]


很明显,这个函数不是求和函数,而是一个自身函数。假设这个求和函数只能从数组开始,而不能从表开始,我该怎么办?
Thanks in advance

vsmadaxz

vsmadaxz1#

使用apply将每个元素转换为它的等效数组:

  1. df['col1'] = df['col1'].apply(lambda x: np.array(x))
  2. type(df['col1'].iloc[0])
  3. numpy.ndarray

字符串
数据类型:

  1. df = pd.DataFrame({'col1': [[1,2,3],[0,0,0]]})
  2. df


的数据

展开查看全部
ma8fv8wu

ma8fv8wu2#

您可以在列表顶部应用pd.Series。例如,

  1. >>> X_train = df.col1.apply(pd.Series).to_numpy()
  2. >>> type(X_train)
  3. numpy.ndarray

字符串

相关问题