繁体   English   中英

pandas dataframe 创建带循环的列

[英]pandas dataframe creating columns with loop

我正在尝试添加新列并使用 for 循环填充数据,从价格列中获取数据并将 1000 次迭代插入到新的 dataframe 列中,在 1000 次价格列迭代之后再为 1000 多个新列创建一个新列,等等。

import pandas as pd

import matplotlib.pyplot as plt

data_frame = pd.read_csv('candle_data.csv', names=['Time', 'Symbol','Side', 'Size', 'Price','1','2','3','4','5'])
price_df = pd.DataFrame()
count_tick = 0
count_candle = 0
for price in data_frame['Price']:
    if count_tick < 1000:
        price_df[count_candle] = price
        count_tick +=1
    elif count_tick == 1000:
        count_tick = 0
        count_candle +=1


price_df.head()

不必循环遍历数据框,可以使用切片来实现,请看下面的示例代码。 我已经加载了一个包含 100 行的 Dataframe,并尝试从“col1”的前 50 行创建列 -“col3”,并从“col1”的下 50 行发布该列“col4”。 您可以修改以下代码以指向您的列和您想要的值

import pandas as pd
import numpy as np

    if __name__ == '__main__':
        col1 = np.linspace(0,100,100)
        col2 = np.linspace(100, 200, 100)
        dict = {'col1':col1,'col2':col2}
        df = pd.DataFrame(dict)
        df['col3']= df['col1'][0:50]
        df['col4'] = df['col1'][50:100]
        print(df)

解决方案 2 基于来自评论的添加信息

import pandas as pd
import numpy as np

if __name__ == '__main__':
    pd.set_option('display.width', 100000)
    pd.set_option('display.max_columns', 500)
    ### partition size for example I have taken a low volums 20
    part_size = 20
    ## number generation for data frame
    col1 = np.linspace(0,100,100)
    col2 = np.linspace(100, 200, 100)

    ## create initial data frame
    dict = {'col1':col1,'col2':col2}
    df = pd.DataFrame(dict)
    len = df.shape[0]
    ## tells you how many new columns you need
    rec = int(len/part_size)
    _ = {}
    ## initialize slicing variables
    low =0
    high=part_size
    print(len)
    for i in range(rec):
        if high >= len:
            _['col_name_here{0}'.format(i)] = df[low:]['col1']
            break
        else:
            _['col_name_here{0}'.format(i)] = df[low:high]['col1']
            low = high
            high+= part_size
    df = df.assign(**_)
    print(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM