提问者:小点点

如何将列表添加到数据框?


我知道这个问题以前有人问过,但是我已经尝试实现了我找到的所有解决方案,但是仍然没有解决这个问题。

这是我的密码

import csv

import pandas as pd

import helperFunctions import pandas tickers = []

f = open("watchlist.txt", "r") for i in f:
    tickers.append((helperFunctions.getTicker(i)))

head = ["Name", "Growth", "Recommendation", "Earnings Growth", "Current Ratio",
        "Total Cash", "Debt", " Revenue", "Percentage Shares Out", "Percentage Institutions", "Percentage Insiders",
        "Price to Book", "Short Ratio", "Regular Market Price"] df = pd.DataFrame() df = pd.DataFrame(columns=head) try:
    for i in tickers:
        currentTicker = []
        currentTicker.append(i.info['longName'])
        currentTicker.append(i.info['revenueGrowth'])
        currentTicker.append(i.info['recommendationKey'])
        currentTicker.append(i.info['earningsGrowth'])
        currentTicker.append(i.info['currentRatio'])
        currentTicker.append(i.info['totalCash'])
        currentTicker.append(i.info['totalDebt'])
        currentTicker.append(i.info['totalRevenue'])
        currentTicker.append(i.info['sharesPercentSharesOut'])
        currentTicker.append(i.info['heldPercentInstitutions'])
        currentTicker.append(i.info['heldPercentInsiders'])
        currentTicker.append(i.info['priceToBook'])
        currentTicker.append(i.info['shortRatio'])
        currentTicker.append(i.info['beta'])
        currentTicker.append(i.info['regularMarketPrice'])
        print(str(currentTicker + "\n"))
        '''
        # Why Don't these work??
        1.
        df.append(currentTicker)
        
        2.
        df_length = len(df)
        df.loc[df_length] = currentTicker
        
        3.
        a_series = pd.Series(currentTicker, index=df.columns)
        df = df.append(a_series, ignore_index=True)
        
        '''

except Exception as e:
    print(str(i) + repr(e))

print(df)

在列表中看到注释的部分中,这些都是我试图将每次迭代添加到数据框架中的内容。基本上,监视列表是一个带有一些标记的TXT文件,我想获取这些数据并将其放入一个数据帧中,我遇到了一些麻烦。谢谢你抽出时间。


共2个答案

匿名用户

我就是这样解决的

import csv
import pandas as pd
import helperFunctions
import pandas
tickers = []

f = open("watchlist.txt", "r")
for i in f:
    tickers.append((helperFunctions.getTicker(i)))

head = ["Name", "Growth", "Recommendation", "Earnings Growth", "Current Ratio",
        "Total Cash", "Debt", "Revenue", "Percentage Shares Out", "Percentage Institutions", "Percentage Insiders",
        "Price to Book", "Short Ratio", "Regular Market Price"]
df = pd.DataFrame(columns=head)
try:
    for i in tickers:
        currentTicker = []
        currentTicker.append(i.info['longName'])
        currentTicker.append(i.info['revenueGrowth'])
        currentTicker.append(i.info['recommendationKey'])
        currentTicker.append(i.info['earningsGrowth'])
        currentTicker.append(i.info['currentRatio'])
        currentTicker.append(i.info['totalCash'])
        currentTicker.append(i.info['totalDebt'])
        currentTicker.append(i.info['totalRevenue'])
        currentTicker.append(i.info['sharesPercentSharesOut'])
        currentTicker.append(i.info['heldPercentInstitutions'])
        currentTicker.append(i.info['heldPercentInsiders'])
        currentTicker.append(i.info['priceToBook'])
        currentTicker.append(i.info['shortRatio'])
        currentTicker.append(i.info['beta'])
        currentTicker.append(i.info['regularMarketPrice'])

        df = df.append({'Name': currentTicker[0],
                        'Growth': currentTicker[1],
                        "Recommendation":currentTicker[2],
                        "Earnings Growth":currentTicker[3],
                        "Current Ratio": currentTicker[4],
                        "Total Cash":currentTicker[5],
                        "Debt": currentTicker[6],
                        "Revenue": currentTicker[7],
                        "Percentage Shares Out": currentTicker[8],
                        "Percentage Institutions": currentTicker[9],
                        "Percentage Insiders": currentTicker[10],
                        "Price to Book": currentTicker[11],
                        "Short Ratio": currentTicker[12],
                        "Regular Market Price": currentTicker[13],
                        },
                       ignore_index=True)
        #print(currentTicker)
except Exception as e:
    print(str(i) + repr(e))

print(df)

匿名用户

代码中的问题似乎与以下事实有关:currentTicker列表有一个额外的列,即beta,它不存在于df的列中。

将该列添加到标题或将其从currentTicker中删除后,方法2和3将起作用。

import csv

import pandas as pd

import helperFunctions

with open("watchlist.txt", "r") as f:
    tickers = [helperFunctions.getTicker(i) for i in f]

head = [
    "Name",
    "Growth",
    "Recommendation",
    "Earnings Growth",
    "Current Ratio",
    "Total Cash",
    "Debt",
    "Revenue",
    "Percentage Shares Out",
    "Percentage Institutions",
    "Percentage Insiders",
    "Price to Book",
    "Short Ratio",
    "Regular Market Price"
]
df = pd.DataFrame(columns=head)

columns_to_extract = [
    'longName',
    'revenueGrowth',
    'recommendationKey',
    'earningsGrowth',
    'currentRatio',
    'totalCash',
    'totalDebt',
    'totalRevenue',
    'sharesPercentSharesOut',
    'heldPercentInstitutions',
    'heldPercentInsiders',
    'priceToBook',
    'shortRatio',
    # 'beta', # <- The column for this value is missing from `head`
    'regularMarketPrice'
]

currentTicker = [i.info[key] for key in columns_to_extract]

# 1. Method - THIS DOES NOT WORK
# df.append(currentTicker)

# 2. Method
df_length = len(df)
df.loc[df_length] = currentTicker

# 3. Method
a_series = pd.Series(currentTicker, index=df.columns)
df = df.append(a_series, ignore_index=True)

print(df)