pandas将一组API函数应用于多个数据框。

huangapple go评论108阅读模式
英文:

pandas apply a list of api functions to many dataframes

问题

以下是您提供的内容的翻译部分:

我想将一系列 pandas.api 函数应用于多个数据框并获取它们的响应。
我的代码:

  1. panda_apis = [
  2. pd.api.types.infer_dtype,
  3. pd.api.types.is_bool_dtype,
  4. pd.api.types.is_categorical_dtype,
  5. pd.api.types.is_complex_dtype,
  6. pd.api.types.is_datetime64_any_dtype,
  7. pd.api.types.is_datetime64_dtype]
  8. api_df = pd.DataFrame(data={'function':[i.__name__ for i in panda_apis]})
  9. api_df.head()
  1. # 两个示例数据框
  2. df1 =
  3. Datetime value
  4. 0 2002-12-31 01:00:00 5077.0
  5. 1 2002-12-31 02:00:00 4939.0
  6. 2 2002-12-31 03:00:00 4885.0
  7. 3 2002-12-31 04:00:00 4857.0
  8. df2 =
  9. Datetime value
  10. 0 2013-12-31 01:00:00 1861.0
  11. 1 2013-12-31 02:00:00 1835.0
  12. 2 2013-12-31 03:00:00 1841.0
  13. 3 2013-12-31 04:00:00 1872.0
  14. 4 2013-12-31 05:00:00 1934.0
  15. df1 = df1.addprefix('df1_')
  16. api_df[df1.columns] = api_df['function'].apply(lambda x: eval(x(df1)))
  17. 目前的输出
  18. TypeError: 'str' object is callable
  19. 期望的输出
  20. ```python
  21. api_df =
  22. function df1_Datetime df1_value df2_Datetime df2_value
  23. 0 infer_dtype string float ....
  24. 1 is_bool_dtype False False ..
  25. 2 is_categorical_dtype False False ..
  26. 3 is_complex_dtype False False ..
  27. 4 is_datetime64_any_dtype True False ..
  1. 请注意,由于代码的复杂性,可能需要进一步的调试以获得期望的输出。
  2. <details>
  3. <summary>英文:</summary>
  4. I want apply a list of [`pandas.api`][1] functions to many dataframes and get their response.
  5. My code:
  6. panda_apis = [
  7. pd.api.types.infer_dtype,
  8. pd.api.types.is_bool_dtype,
  9. pd.api.types.is_categorical_dtype,
  10. pd.api.types.is_complex_dtype,
  11. pd.api.types.is_datetime64_any_dtype,
  12. pd.api.types.is_datetime64_dtype]
  13. api_df = pd.DataFrame(data={&#39;function&#39;:[i.__name__ for i in panda_apis]})
  14. api_df.head()
  15. function
  16. 0 infer_dtype
  17. 1 is_bool_dtype
  18. 2 is_categorical_dtype
  19. 3 is_complex_dtype
  20. 4 is_datetime64_any_dtype
  21. # Two example dataframes
  22. df1 =
  23. Datetime value
  24. 0 2002-12-31 01:00:00 5077.0
  25. 1 2002-12-31 02:00:00 4939.0
  26. 2 2002-12-31 03:00:00 4885.0
  27. 3 2002-12-31 04:00:00 4857.0
  28. df2 =
  29. Datetime value
  30. 0 2013-12-31 01:00:00 1861.0
  31. 1 2013-12-31 02:00:00 1835.0
  32. 2 2013-12-31 03:00:00 1841.0
  33. 3 2013-12-31 04:00:00 1872.0
  34. 4 2013-12-31 05:00:00 1934.0
  35. df1 = df1.addprefix(&#39;df1_&#39;)
  36. api_df[df1.columns] = api_df[&#39;function&#39;].apply(lambda x: eval(x(df1)))
  37. Present output:
  38. TypeError: &#39;str&#39; object is not callable
  39. Expected output:
  40. api_df =
  41. function df1_Datetime df1_value df2_Datetime df2_value
  42. 0 infer_dtype string float ....
  43. 1 is_bool_dtype False False ..
  44. 2 is_categorical_dtype False False ..
  45. 3 is_complex_dtype False False ..
  46. 4 is_datetime64_any_dtype True False ..
  47. [1]: https://pandas.pydata.org/docs/reference/api/pandas.api.types.pandas_dtype.html
  48. </details>
  49. # 答案1
  50. **得分**: 1
  51. lst = [df1.add_prefix("df1_"), df2.add_prefix("df2_")]
  52. out = (
  53. api_df.join(
  54. pd.concat([pd.DataFrame([
  55. df.apply(f) for f in panda_apis]) for df in lst], axis=1)
  56. )
  57. )
  58. *NB : A DataFrame column can't have more than one [dtype][1]*.
  59. Output :
  60. print(out)
  61. function df1_Datetime df1_value df2_Datetime df2_value
  62. 0 infer_dtype string floating string floating
  63. 1 is_bool_dtype False False False False
  64. 2 is_categorical_dtype False False False False
  65. 3 is_complex_dtype False False False False
  66. 4 is_datetime64_any_dtype False False False False
  67. 5 is_datetime64_dtype False False False False
  68. With the `Datetime` *s* cast to `datetime64[ns]`, we get :
  69. function df1_Datetime df1_value df2_Datetime df2_value
  70. 0 infer_dtype datetime64 floating datetime64 floating
  71. 1 is_bool_dtype False False False False
  72. 2 is_categorical_dtype False False False False
  73. 3 is_complex_dtype False False False False
  74. 4 is_datetime64_any_dtype True False True False
  75. 5 is_datetime64_dtype True False True False
  76. [1]: https://pandas.pydata.org/docs/user_guide/basics.html#dtypes
  77. <details>
  78. <summary>英文:</summary>
  79. You can try this :
  80. lst = [df1.add_prefix(&quot;df1_&quot;), df2.add_prefix(&quot;df2_&quot;)]
  81. out = (
  82. api_df.join(
  83. pd.concat([pd.DataFrame([
  84. df.apply(f) for f in panda_apis]) for df in lst], axis=1)
  85. )
  86. )
  87. *NB : A DataFrame column can&#39;t have more than one [dtype][1]*.
  88. Output :
  89. print(out)
  90. function df1_Datetime df1_value df2_Datetime df2_value
  91. 0 infer_dtype string floating string floating
  92. 1 is_bool_dtype False False False False
  93. 2 is_categorical_dtype False False False False
  94. 3 is_complex_dtype False False False False
  95. 4 is_datetime64_any_dtype False False False False
  96. 5 is_datetime64_dtype False False False False
  97. With the `Datetime` *s* cast to `datetime64[ns]`, we get :
  98. function df1_Datetime df1_value df2_Datetime df2_value
  99. 0 infer_dtype datetime64 floating datetime64 floating
  100. 1 is_bool_dtype False False False False
  101. 2 is_categorical_dtype False False False False
  102. 3 is_complex_dtype False False False False
  103. 4 is_datetime64_any_dtype True False True False
  104. 5 is_datetime64_dtype True False True False
  105. [1]: https://pandas.pydata.org/docs/user_guide/basics.html#dtypes
  106. </details>

huangapple
  • 本文由 发表于 2023年6月13日 06:14:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/76460640.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定