Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建单行数据帧_Python_Python 3.x_Pandas - Fatal编程技术网

Python 创建单行数据帧

Python 创建单行数据帧,python,python-3.x,pandas,Python,Python 3.x,Pandas,我在Pandas(Python3.7)中有以下数据帧 我希望在一个新的数据帧中有一行输出,例如 CH_SYMBOL mTIMESTAMP CH_OPENING_PRICE CH_CLOSING_PRICE CH_TRADE_HIGH_PRICE CH_TRADE_LOW_PRICE WIPRO 9-Jan-2020 254.25 253.65 256.50 252.65 08-Jan-2020 254.00 254.80 256.15 252.55 07-J

我在Pandas(Python3.7)中有以下数据帧

我希望在一个新的数据帧中有一行输出,例如

CH_SYMBOL   mTIMESTAMP  CH_OPENING_PRICE    CH_CLOSING_PRICE    CH_TRADE_HIGH_PRICE CH_TRADE_LOW_PRICE
    WIPRO 9-Jan-2020 254.25 253.65  256.50  252.65 08-Jan-2020  254.00  254.80  256.15  252.55 07-Jan-2020  253.25  255.20  256.35  250.20  ....
我的代码是

import requests
import json
import pandas as pd
from datetime import datetime
from datetime import timedelta
pd.options.display.float_format = '{:,.2f}'.format
symbol1="WIPRO"
url='https://nseindia.com/api/historical/cm/equity?symbol=INFY&series=["EQ"]&from=02-01-2020&to=09-01-2020'
url_hist=url.replace('INFY', symbol1)
print(url_hist)

tdt = datetime.today()
print(tdt)
fromdt=tdt+timedelta(-5)
todt=tdt+timedelta(-1)
print(fromdt.strftime("%d-%m-%Y"))
print(todt.strftime("%d-%m-%Y"))
url=url_hist

headers = { "Accept-Encoding":"gzip, deflate","Accept-Language":"en-US,en;q=0.9",
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.78"}

r=requests.get(url, headers=headers).json()
df1=pd.DataFrame().from_records(r["data"])
df2=df1[['CH_SYMBOL','mTIMESTAMP','CH_OPENING_PRICE','CH_CLOSING_PRICE','CH_TRADE_HIGH_PRICE','CH_TRADE_LOW_PRICE']]
df2
因为我需要新的数据帧,所以像WIPRO或INFY这样的符号可以用来与另一个数据帧合并 Pl帮助


感谢您在df上使用展平()方法:

更新

list_columns = df.columns[1:]
new_df = (df.assign(count = 'ROW_' + df.groupby('CH_SYMBOL')
                                       .cumcount()
                                       .astype(str)
                    )
            .pivot_table(columns = 'count',
                         values = list_columns,
                         aggfunc = 'first',
                         index = 'CH_SYMBOL')
            .swaplevel(axis=1)
            .sort_index(axis=1)
            .reindex(columns = list_columns,level = 1)
            .rename_axis(columns = [None,None],index = None))
print(new_df)
输出

             ROW_0                                                        \
        mTIMESTAMP CH_OPENING_PRICE CH_CLOSING_PRICE CH_TRADE_HIGH_PRICE   
WIPRO  09-Jan-2020           254.25           253.65               256.5   

                                ROW_1                                    \
      CH_TRADE_LOW_PRICE   mTIMESTAMP CH_OPENING_PRICE CH_CLOSING_PRICE   
WIPRO             252.65  08-Jan-2020            254.0            254.8   

                                              ...        ROW_4  \
      CH_TRADE_HIGH_PRICE CH_TRADE_LOW_PRICE  ...   mTIMESTAMP   
WIPRO              256.15             252.55  ...  03-Jan-2020   

                                                             \
      CH_OPENING_PRICE CH_CLOSING_PRICE CH_TRADE_HIGH_PRICE   
WIPRO            249.5            251.1               252.7   

                                ROW_5                                    \
      CH_TRADE_LOW_PRICE   mTIMESTAMP CH_OPENING_PRICE CH_CLOSING_PRICE   
WIPRO             247.35  02-Jan-2020            246.6            248.3   


      CH_TRADE_HIGH_PRICE CH_TRADE_LOW_PRICE  
WIPRO               249.9             246.35  

[1 rows x 30 columns]

如果不使用
多索引
,则应重复列的名称

new_df.columns = new_df.columns.droplevel(0)
print(new_df)
        mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  CH_TRADE_HIGH_PRICE  \
WIPRO  09-Jan-2020            254.25            253.65                256.5   

       CH_TRADE_LOW_PRICE   mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  \
WIPRO              252.65  08-Jan-2020             254.0             254.8   

       CH_TRADE_HIGH_PRICE  CH_TRADE_LOW_PRICE  ...   mTIMESTAMP  \
WIPRO               256.15              252.55  ...  03-Jan-2020   

       CH_OPENING_PRICE  CH_CLOSING_PRICE  CH_TRADE_HIGH_PRICE  \
WIPRO             249.5             251.1                252.7   

       CH_TRADE_LOW_PRICE   mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  \
WIPRO              247.35  02-Jan-2020             246.6             248.3   

       CH_TRADE_HIGH_PRICE  CH_TRADE_LOW_PRICE  
WIPRO                249.9              246.35  

[1 rows x 30 columns]

为什么要将数据帧转换为空格分隔的字符串?谢谢,但我希望在数据帧WIPRO 9-Jan-2020 254.25 253.65 256.50 252.65 08-Jan-2020 254.00 254.80 256.15 252.55 07-Jan-2020 253.25中输出。。。这样,WIPRO应该只出现一次,并将用于与另一个DataFramePerfect合并,您能解释一下您所做的吗?我需要时间才能达到你的水平
new_df.columns = new_df.columns.droplevel(0)
print(new_df)
        mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  CH_TRADE_HIGH_PRICE  \
WIPRO  09-Jan-2020            254.25            253.65                256.5   

       CH_TRADE_LOW_PRICE   mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  \
WIPRO              252.65  08-Jan-2020             254.0             254.8   

       CH_TRADE_HIGH_PRICE  CH_TRADE_LOW_PRICE  ...   mTIMESTAMP  \
WIPRO               256.15              252.55  ...  03-Jan-2020   

       CH_OPENING_PRICE  CH_CLOSING_PRICE  CH_TRADE_HIGH_PRICE  \
WIPRO             249.5             251.1                252.7   

       CH_TRADE_LOW_PRICE   mTIMESTAMP  CH_OPENING_PRICE  CH_CLOSING_PRICE  \
WIPRO              247.35  02-Jan-2020             246.6             248.3   

       CH_TRADE_HIGH_PRICE  CH_TRADE_LOW_PRICE  
WIPRO                249.9              246.35  

[1 rows x 30 columns]