pandas 多个股票代码共享指数时如何按指数取最后一行

aoyhnmkz  于 2023-04-04  发布在  其他
关注(0)|答案(3)|浏览(107)

你好,我花了这么多时间试图解决这个不成功。

import numpy as np
from datetime import date
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_csv(r"C:\Users\MichaelBerman\Dropbox\Code\Python\Mike-Code\data.csv", index_col=0)
# Converting the index as date
df.index = pd.to_datetime(df.index)
print(df)

数据看起来像什么:

数据存储的方式是每个股票代码从某个日期运行到昨天2023-04-02。我试图提取2023-04-02的每个股票代码的数据
任何帮助都将不胜感激。
谢谢迈克
我尝试过分组和使用last,但它会获取最后一个自动收报机的数据并将其应用于所有自动收报机,
我尝试了:

ct2axkht

ct2axkht1#

您可以使用.loc

# Using string
>>> df.loc['2023-04-02']

# Using the most recent date
>>> df.loc[df.index.max()]

# Using yesterday
>>> df.loc[pd.Timestamp.today().date() - pd.DateOffset(days=1)]

Tipsread_csv可以通过parse_dates参数将索引转换为datetime:

df = pd.read_csv(r"data.csv", index_col=0, parse_dates=[0])
rjjhvcjd

rjjhvcjd2#

如果你想分别提取每个股票代码的数据,你可以使用loc方法循环唯一的股票代码来提取数据:

tickers = df['Ticker'].unique()

for ticker in tickers:
    ticker_data = df.loc[(df['Ticker'] == ticker) & (df.index == '2023-04-02')]
    # Do something with the ticker_data
yc0p9oo0

yc0p9oo03#

我已经尝试过循环,但它出现在第二个答案中,前提是它实际上没有循环。

tickers = df_f['ticker'].unique()
yesterday = pd.Timestamp.today().date() - pd.DateOffset(days=1)
df_list = list()
for ticker in tickers:
    ticker_data = df_f.loc[(df_f['ticker'] == ticker) & (df_f.index == yesterday)]
    df_list.append(ticker_data)
    
print(ticker_data)
    
# combine all dataframes into a single dataframe
df_new = pd.concat(df_list)
print(df_new)

results
你可以看到打印“ticker_data”显示了最终的ticker结果,我不确定是否有任何循环发生。

相关问题