用增量数填充数据列值,Python 3.6

我有 Dataframe 包含列 + "Order" 列,该列具有整数唯一编号,并且某些行为零。


我需要从“订单”值的最大值用增量数更新零。


例如:


Max Value of df['Order'] = 4 并且有 3 条记录 df['Order'] == 0 那么具有 0 值的那 3 行需要用 5、6、7 填充。


我试过下面的脚本:


Dimension_Items = {'Col1':['A', 'B', 'C', 'D', 'E', 'F'], 'Order':[0,2,3,4,0,0]}

Dimension_Items = pd.DataFrame.from_dict(Dimension_Items)


Max_Order = Dimension_Items['Order'].max()

Dimension_Items.loc[Dimension_Items['Order'] == 0, 'Order'] = range(Max_Order+1, len(Dimension_Items)+1)

错误:


Traceback (most recent call last):

    Dimension_Items.loc[Dimension_Items['Order'] == 0, 'Order'] = range(Max_Order+1, len(Dimension_Items)+1)

  File "C:\Python36\lib\site-packages\pandas\core\indexing.py", line 189, in __setitem__

    self._setitem_with_indexer(indexer, value)

  File "C:\Python36\lib\site-packages\pandas\core\indexing.py", line 606, in _setitem_with_indexer

    raise ValueError('Must have equal len keys and value '

ValueError: Must have equal len keys and value when setting with an iterable

给出错误,请帮助解决这个问题


繁星coding
浏览 168回答 2
2回答

收到一只叮咚

因此,如果我理解正确,我们可以隔离零,然后用列表中的值填充它们。l = range(df.Order.max() + 1, df.Order.max() + df.loc[df.Order == 0, 'Order'].size + 1)df.loc[df.Order == 0, 'Order'] = l  Col1  Order0    A      51    B      22    C      33    D      44    E      65    F      7 

四季花海

您可以遍历 DataFrame 以查找 Order = 0 的项目,然后使用 max_order + 1 更新每个 Order。试试这个:import pandas as pddata = {    'Col1': ['A', 'B', 'C', 'D', 'E', 'F'],     'Order': [0, 2, 3, 4, 0, 0]}df = pd.DataFrame(data)max_order = df['Order'].max()for i in range(len(df)):    if df.loc[i, 'Order'] == 0:        df.loc[i, 'Order'] = max_order + 1        max_order += 1df.head()输出:    Order   Value0      A        51      B        22      C        33      D        44      E        6希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python