ValueError:无法设置没有定义索引的帧和无法转换为Series的值

Tan*_*rza 21 python

我在我的python 3.X中使用Pandas 0.20.3.我想在另一个pandas数据框的pandas数据框中添加一列.数据框都包含51行.所以我使用了以下代码:

class_df['phone']=group['phone'].values
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

ValueError: Cannot set a frame with no defined index and a value that cannot be converted to a Series
Run Code Online (Sandbox Code Playgroud)

class_df.dtypes给了我:

Group_ID         object
YEAR             object
Terget           object
phone            object
age              object
Run Code Online (Sandbox Code Playgroud)

type(group['phone'])返回pandas.core.series.Series

您能否建议我删除此错误需要做哪些更改?

组['电话']的前5行如下:

0    [735015372, 72151508105, 7217511580, 721150431...
1                                                   []
2    [735152771, 7351515043, 7115380870, 7115427...
3    [7111332015, 73140214, 737443075, 7110815115...
4    [718218718, 718221342, 73551401, 71811507...
Name: phoen, dtype: object
Run Code Online (Sandbox Code Playgroud)

小智 10

在大多数情况下,当您返回一个空的数据框时,会出现此错误。对我有用的最好方法是在使用apply()之前先检查数据框是否为空

if len(df) !=  0:
    df['indicator'] = df.apply(assign_indicator, axis=1)
Run Code Online (Sandbox Code Playgroud)

  • 检查数据帧是否不为空的另一种常见方法是:“if not df.empty:” (7认同)
  • 解决了我的一天你是个天才 (5认同)

cs9*_*s95 9

你有一列参差不齐的清单.您唯一的选择是分配列表列表,而不是列表数组(这是.value给出的).

class_df['phone'] = group['phone'].tolist()
Run Code Online (Sandbox Code Playgroud)


Tho*_*s R 7

问题标题的错误

“ValueError:无法设置没有定义索引的框架和无法转换为系列的值”

如果由于某种原因表没有任何行,也可能发生。


小智 6

您可以使用apply()result_type函数的 set 参数来“减少”,而不是使用 if 语句。

df['new_column'] = df.apply(func, axis=1, result_type='reduce')
Run Code Online (Sandbox Code Playgroud)