【问题标题】:list of variables in Pandas PythonPandas Python 中的变量列表
【发布时间】:2016-10-11 04:33:19
【问题描述】:

您好,我想循环到 Pandas 数据框结构中的列表值:

有可能吗?

#for a single variable
print(df["var1"].value_counts(normalize = True))

my_list=["var1","var2","var3"]

#instead would like to do something like this:

for i in my_list:
   print(df[i].value_counts(normalize = True))

【问题讨论】:

  • 你基本上想要value_counts 这些列:["var1","var2","var3"]?

标签: python loops pandas dataframe


【解决方案1】:

有内置工具可以提供帮助。

my_list = ["var1", "var2", "var3"]

# j is the column header
# col is the column series
for j, col in df[my_list].iteritems():
    print col.value_counts(normalize=True)

【讨论】:

  • 谢谢,但是这个方法循环到数据框的所有列中,而不是我想循环到 3 个变量,或者我错过了什么?
  • 不,我错过了一些东西。更新帖子...更新
  • 顺便说一句。您的解决方案是完全可以接受的。我的答案只是另一种选择。
【解决方案2】:

您可以使用apply,但它仍然是幕后的循环:

df[my_list].apply(pd.Series.value_counts, normalize=True)

如果您只想打印,请使用lambda 函数:

df[my_list].apply(lambda col: print(pd.Series.value_counts(col, normalize=True)))

【讨论】:

  • 谢谢,但是这个方法循环到数据框的所有列中,而不是我想循环到 3 个变量,或者我错过了什么?
  • 对不起@progster 我误读了你的问题。那你为什么对你的代码不满意呢?
  • 我的错,我的问题不是很清楚。我想知道是否有任何“熊猫”更具体的技巧
  • @progster 我已经编辑了我的答案。它有点“熊猫式”,但您的代码基本上没有任何问题。
【解决方案3】:

我认为您可以将.apply()lambda 一起使用。

df[["var1","var2","var3"]].apply(lambda x: x.value_counts(normalize = True))

【讨论】:

  • 其实你不需要lambda函数:你可以直接将normalize=True作为关键字参数传入apply。看我的回答;)
  • @IanS 哦,是的。我之前没有看到你的答案。
猜你喜欢
  • 1970-01-01
  • 2019-02-23
  • 2022-11-03
  • 1970-01-01
  • 2017-08-10
  • 2022-08-21
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多