我在我的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
答案 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')