【发布时间】:2019-06-02 19:11:37
【问题描述】:
最后更新 最后更新 2
我从这里读到: get list from pandas dataframe column
Pandas DataFrame 列在拉出时是 Pandas Series
但在我的情况下这不是真的:
第一部分(构建 DataFrame 读取 json 抓取) 因为它包含业务信息,所以我无法显示完整的代码,但基本上它读取一行数据(存储在 Series 中)并附加在 DataFrame 的末尾。
dfToWrite = pandas.DataFrame(columns=[lsHeader]) # Empty with column headers
for row in jsAdtoolJSON['rows']:
lsRow = []
for col in row['row']:
lsRow.append((col['primary'])['value'])
dfRow = pandas.Series(lsRow, index = dfToWrite.columns)
dfToWrite = dfToWrite.append(dfRow, ignore_index = True)
下一部分(检查类型):(请忽略函数的功能)
def CalcMA(df: pandas.DataFrame, target: str, period: int, maname: str):
print(type(df[target]))
最后调用函数:(“Raw_Impressions”是列标题)
CalcMA(dfToWrite, "Raw_Impressions", 5, "ImpMA5")
Python 控制台显示:
类'pandas.core.frame.DataFrame'
附加问题:如果不是系列,如何从数据框列中获取列表(在这种情况下我可以使用tolist())?
更新 1 从这里: Bokeh: AttributeError: 'DataFrame' object has no attribute 'tolist'
我发现我需要使用.value.tolist(),但它仍然无法解释为什么当我拉出一列时我得到的是另一个数据框,而不是一个系列。
更新 2 发现df有MultiIndex,很惊讶:
MultiIndex(levels=[['COST_/CPM', 'CTR', 'ECPM/_ROI', 'Goal_Ratio', 'Hour_of_the_Day', 'IMP./Joins', 'Raw_Clicks_/ _Unique_Clicks'、'Raw_Impressions'、'Unique_Goal_/_UniqueGoal_Forecasted_Value']]、 标签=[[4, 7, 5, 6, 1, 8, 3, 0, 2]])
打印出 df / 写入 .csv 时,我看不到 labels,它只是一个普通的 DataFrame。不知道我从哪里得到的标签。
【问题讨论】: