基本Pandas:如何在数据帧中基于另一个变量复制变量的特定部分



好吧,我的数据是1088辆车,分为14类("Hovedcategorinavn"(。每辆车都有一个描述其使用量的值("anvendelesgrad"(。我希望复制";anvenderssgrad";变量,同时改变";anvenderssgrad";某些车辆类别的值,但保留其他类别的值。我该怎么做?

我尝试过一些奇怪的变通方法,比如这样("inner_merge"是我的数据帧,而函数"anvenderssgrad"是计算变量"anvendssgrad"的函数(:

def anvend_ny6(var):
if var == 'Entreprenørudstyr':
return 1
if var == 'Fejemaskiner, små':
return 1
if var == 'Fejemaskiner, store':
return 1
if var == 'Varevogne, komprimator':
return 1
if var == 'Transportvogne, små':
return 1
if var == 'Græsklipper':
return 1
if var == 'Personbiler':
return 0.5
if var == 'Gaffeltrucks':
return 1
else:
return anvendelsesgrad(inner_merge.timer_tænding, inner_merge.tænding_agg, inner_merge.Count, inner_merge.dage_kørt_agg)
var3 = inner_merge.Hovedkategorinavn
inner_merge['nyanvend6'] = anvend_ny6(var3)
inner_merge.nyanvend6

然而,这会产生以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-241-bf7bd5cedfcf> in <module>
20 var3 = inner_merge.Hovedkategorinavn
21 
---> 22 inner_merge['nyanvend6'] = anvend_ny6(var3)
23 inner_merge.nyanvend6
<ipython-input-241-bf7bd5cedfcf> in anvend_ny6(var)
1 def anvend_ny6(var):
----> 2     if var == 'Entreprenørudstyr':
3         return 1
4     if var == 'Fejemaskiner, små':
5         return 1
~anaconda3libsite-packagespandascoregeneric.py in __nonzero__(self)
1440     @final
1441     def __nonzero__(self):
-> 1442         raise ValueError(
1443             f"The truth value of a {type(self).__name__} is ambiguous. "
1444             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我相信有一个比解决这个问题更简单的解决方案,而我只是没有足够的知识或智慧来弄清楚如何解决。

您正在尝试将var3(一个序列(与字符串进行比较。

如果你想调用函数";"按行";,

inner_merge['nyanvend6'] = inner_merge.Hovedkategorinavn.apply(anvend_ny6)

Pandas将为该系列中的每个项目调用CCD_ 2。

(但是,调用anvendelsesgradelse子句仍然可能给您带来一些麻烦。(

最新更新