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

时间:2018-01-17 17:22:24

标签: python

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

class_df['phone']=group['phone'].values

我收到以下错误消息:

ValueError: Cannot set a frame with no defined index and a value that cannot be converted to a Series

class_df.dtypes给了我:

Group_ID         object
YEAR             object
Terget           object
phone            object
age              object

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

4 个答案:

答案 0 :(得分:15)

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

if len(df) !=  0:
    df['indicator'] = df.apply(assign_indicator, axis=1)

答案 1 :(得分:7)

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

class_df['phone'] = group['phone'].tolist()

答案 2 :(得分:3)

问题标题错误

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

如果由于某种原因该表没有任何行,也会发生

答案 3 :(得分:2)

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

df['new_column'] = df.apply(func, axis=1, result_type='reduce')