【问题标题】:Transformation to Pandas dataframe转换为 Pandas 数据框
【发布时间】:2021-07-23 06:52:07
【问题描述】:

我将 csv 转换为 pandas 数据框,但是当我运行代码时,它找不到列。在分离函数中进行转换的目的是因为我希望能够对我的函数进行单元测试。

import pandas as pd

def main():
    inputDf = pd.read_csv("android-games.csv", header=0, delim_whitespace=True)

    df = inputDf.transform(model)

    print(df)


def model(df):
    df\
        .transform(add_col)\
        .transform(test_col)

def add_col(df):
    df["price_1"] = df["price"] + 1

def test_col(df):
    df["rank_1"] = df["rank"] + 1


if __name__ == '__main__':
    main()

这是我的错误,我猜我的代码结构不好:

文件 "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexes/range.py", 第 358 行,在 get_loc 中 raise KeyError(key) KeyError: 'price'

【问题讨论】:

  • 我们需要查看 csv 来帮助您
  • @xjcl 刚刚添加了 csv 的截图
  • print df.columns 好像列名中有空格。

标签: python pandas function dataframe


【解决方案1】:

我不清楚您为什么要使用转换,因为我认为您可以通过以下更简单的方式获得结果(除非我误解了您想要实现的目标):

df = pd.read_csv("android-games.csv", header=0, delim_whitespace=True)
df["price_1"] = df["price"] + 1
df["rank_1"] = df["rank"] + 1
print(df)

【讨论】:

  • 我同意你的观点,但我的 ETL 会变得更大,我正在尝试在函数中进行所有转换,以便能够对我的代码进行单元测试。
  • 这很好,但只有这样的功能:def do_transform(df): [code to modify] return df
猜你喜欢
  • 2019-05-14
  • 2014-08-19
  • 2012-10-15
  • 1970-01-01
  • 2019-07-01
  • 2021-12-13
  • 2018-05-29
  • 2020-07-28
相关资源
最近更新 更多