【问题标题】:How to add a string to every even row in a pandas dataframe column series?如何将字符串添加到熊猫数据框列系列中的每个偶数行?
【发布时间】:2016-11-28 04:40:19
【问题描述】:

我是熊猫新手。

我想向 pandas 数据框 df 添加一个新列,并将“开始”分配给每个奇数行,将“停止”分配给每个偶数行。

但是,当我执行df.iloc[1::2, :] = "Start" 时,我将在每个第二个位置插入一个新行,每列中都有“开始”字符串。

我知道在这种情况下,pandas 不知道将“开始”字符串放在哪一列。

但是,我想不出正确的语法。

【问题讨论】:

    标签: python pandas indexing pandas-loc


    【解决方案1】:

    这是我的解决方案 - 还没有弄清楚优化部分,但考虑到一个相当大的数据集,这应该可以很好地处理它 -

    import pandas as pd
    
    df = pd.read_csv('temp.csv')
    
    df['New_Col'] = "Start"
    
    df.loc[1::2,"New_Col"] = "Stop"
    
    print df['New_Col']
    

    输出 -

    0      Start
    1       Stop
    2      Start
    3       Stop
    4      Start
    5       Stop
    6      Start
    7       Stop
    8      Start
    9       Stop
    10     Start
    11      Stop
    12     Start
    13      Stop
    14     Start
    15      Stop
    16     Start
    17      Stop
    18     Start
    19      Stop
    20     Start
    21      Stop
    22     Start
    23      Stop
    24     Start
    25      Stop
    26     Start
    27      Stop
    28     Start
    29      Stop
           ...  
    116    Start
    117     Stop
    118    Start
    119     Stop
    120    Start
    121     Stop
    122    Start
    123     Stop
    124    Start
    125     Stop
    126    Start
    127     Stop
    128    Start
    129     Stop
    130    Start
    131     Stop
    132    Start
    133     Stop
    134    Start
    135     Stop
    136    Start
    137     Stop
    138    Start
    139     Stop
    140    Start
    141     Stop
    142    Start
    143     Stop
    144    Start
    145     Stop
    Name: New_Col, dtype: object
    

    【讨论】:

    • 谢谢人 - 解决了。这与 8GB RAM 机器上的 6GB 文本文件完美配合。
    • 您如何计算“开始”和“停止”事件并将每个事件的数量放在一个附加列中?
    • 把它放在一个单独的系列中并处理它......把它放在原始数据集中会使其非规范化 - print df.groupby('Event')['New_Col'].agg(['count'])
    • 将列创建为分类类型,以便您在内存中节省数百万个开始和停止字符串,但获得相同的视觉结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多