Пандас новичок здесь.Я пытаюсь сделать это в значительной степени точно - я работаю с базой данных и импортирован в файл .csv.В файле «стоимость» некоторые элементы имеют значение «контент», а некоторые - «кампания».Это выглядит так:
content campaign number
salad NaN 5
NaN yogurt 7
и т. Д.Ни один из элементов не имеет значений как для контента, так и для кампании.
В моем исходном наборе данных p я хочу создать новый столбец "число", который просматривает столбцы контента и кампаний точек данных в p и заполняет новыйстолбец с использованием числового значения в файле cost.csv.
Вот как выглядел мой код:
def add_cpp(x):
cppcost = cost.apply(lambda y: y['cpp'] if
(x['content'] == y['content'])
or (x['campaign'] == y['campaign'])
else None, axis = 1)
cppcost = cost.dropna(axis=0, how='all')
if cppcost.empty:
cppcost=np.nan
else:
cppcost = cppcost.to_string(index=False)
return cppcost
p['cpp'] = p.apply(add_cpp, axis=1)
И вот ошибка:
KeyError Traceback (most recent call
last)
<ipython-input-30-8d415648952c> in <module>()
----> 1 p['cpp'] = p.apply(add_cpp, axis=1)`
/.../lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self,
func, axis, broadcast, raw, reduce, args, **kwds)
4875 f, axis,
4876 reduce=reduce,
-> 4877 ignore_failures=ignore_failures)
4878 else:
4879 return self._apply_broadcast(f, axis)`
/.../lib/python2.7/site-packages/pandas/core/frame.pyc in
_apply_standard(self, func, axis, ignore_failures, reduce)
4971 try:
4972 for i, v in enumerate(series_gen):
-> 4973 results[i] = func(v)
4974 keys.append(v.name)
4975 except Exception as e:`
<ipython-input-29-bae74713ac34> in add_cpp(x)
2 cppcost = cost.apply(lambda y: y['cpp'] if
3 (x['content'] == y['content'])
----> 4 else None, axis = 1)
5 cppcost = cost.dropna(axis=0, how='all')
6 if cppcost.empty:`
/.../lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self,
func, axis, broadcast, raw, reduce, args, **kwds)
4875 f, axis,
4876 reduce=reduce,
-> 4877 ignore_failures=ignore_failures)
4878 else:
4879 return self._apply_broadcast(f, axis)`
/.../lib/python2.7/site-packages/pandas/core/frame.pyc in
_apply_standard(self, func, axis, ignore_failures, reduce)
4971 try:
4972 for i, v in enumerate(series_gen):
-> 4973 results[i] = func(v)
4974 keys.append(v.name)
4975 except Exception as e:`
<ipython-input-29-bae74713ac34> in <lambda>(y)
1 def add_cpp(x):
2 cppcost = cost.apply(lambda y: y['cpp'] if
----> 3 (x['content'] == y['content'])
4 else None, axis = 1)
5 cppcost = cost.dropna(axis=0, how='all')`
/.../lib/python2.7/site-packages/pandas/core/series.pyc in
__getitem__(self, key)
621 key = com._apply_if_callable(key, self)
622 try:
--> 623 result = self.index.get_value(self, key)
624
625 if not is_scalar(result):`
/.../lib/python2.7/site-packages/pandas/core/indexes/base.pyc in
get_value(self, series, key)
2572 raise InvalidIndexError(key)
2573 else:
-> 2574 raise e1
2575 except Exception: # pragma: no cover
2576 raise e1`
KeyError: ('cpp', u'occurred at index 3', u'occurred at index 1')
Любая помощьбудет очень признателен - большое спасибо!