【问题标题】:How to append several rows to an existing pandas dataframe with number of rows depending on a comprehension list如何根据理解列表将多行附加到现有的 pandas 数据框中,其中行数
【发布时间】:2021-10-11 06:26:26
【问题描述】:

我试图通过一次添加多行来填充熊猫中现有的数据框,行数取决于理解列表,因此它是可变的。初始数据框填充如下:

import pandas as pd
import portion as P

columns = ['chr', 'Start', 'End', 'type']
x = pd.DataFrame(columns=columns)

RANGE = [(212, 222),(866, 888),(152, 158)]

INTERVAL= P.Interval(*[P.closed(x, y) for x, y in RANGE])

def fill_df(df, junction, chr, type ):
    
    df['Start'] = [x.lower for x in junction]
    df['End'] =  [x.upper for x in junction]
    df['chr'] = chr
    df['type'] = type

    return df

z = fill_df(x, INTERVAL, 1, 'DUP')

这个想法是保持从不同的时间间隔将行附加到数据帧(因此行数可变)。将这些行附加到现有数据框。

Here 我找到了添加多行的不同方法,但它们都不容易应用,除非我编写了一个函数来转换元组或列表中的数据,我不确定它是否有效。我也尝试过使用 pandas append 但我无法为一堆行做到这一点..

有什么简单的方法吗?

非常感谢!

【问题讨论】:

    标签: python pandas append intervals


    【解决方案1】:

    您是否尝试在 pd.Series 中包装列表理解?

    df['Start.pos'] = pd.Series([x.lower for x in junction])

    【讨论】:

    • 对不起,我自己可能没有解释清楚,一旦我得到数据框,我想继续在其他时间间隔向同一个数据框添加行。而且我不知道如何附加新行。问题在于将行附加到已经给出的行。
    【解决方案2】:

    如果你想同时使用 append 和 append 多个元素,你可以创建第二个 DataFrame 表并将其简单地附加到第一个表中。这看起来像这样:

    import intvalpy as ip
    import pandas as pd
    
    inf = [1, 2, 3]
    sup = [4, 5, 6]
    
    intervals = ip.Interval(inf, sup)
    add_intervals = ip.Interval([-10, -20], [10,20])
    
    df = pd.DataFrame(data={'start': intervals.a, 'end': intervals.b})
    df2 = pd.DataFrame(data={'start': add_intervals.a, 'end': add_intervals.b})
    
    df = df.append(df2, ignore_index=True)
    print(df.head(10))
    

    这里使用了专门用于经典和全区间算术的 intvalpy 库。要设置一个或多个间隔,请使用 Interval 函数,其中第一个参数是间隔的左端,第二个参数是间隔的右端。 ignore_index 参数允许继续索引第一个表。

    如果你想添加一行,你可以这样做:

    for k in range(len(intervals)):
        df = df.append({'start': intervals[k].a, 'end': intervals[k].b}, ignore_index=True)
    
    print(df.head(10))
    

    我故意用循环来表明如果你想添加几行,你可以不创建第二个表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多