【发布时间】:2021-08-25 09:22:40
【问题描述】:
我编写了以下函数,它将数据帧的任意数量的列作为一个列表,然后打印指定列的中位数:
def calculate_median(dataframe, *args, *kwargs):
print("Median of columns: ")
for colname in args or kwargs.values():
median_of_column = np.median(dataframe[colname])
print(f"{median_of_column}", sep="\n")
return colname
所以,如果我在数据框中有以下列列表:
colnames = ['Col A', 'Col B', 'Col C', 'Col D']
我遇到的问题是解释器将 整个 列表作为一个整体参数并显示 仅 第一列 (Col A) 的中位数。
我不确定我做错了什么。你能帮忙吗?
【问题讨论】:
-
你怎么称呼这个?
-
@interjay -
median_of_df_columns = calculate_median(df, colnames) # df has been imported before -
你为什么使用可变参数 (
*args) 而不是普通参数?您对kwargs的使用似乎也是错误的。 -
在参数中使用
*args并不意味着 Python 会解包传递给它的参数。这只意味着它会pack 收到的参数。如果要将列表解压缩为参数,请在调用中使用*。如果您只想解包然后再次打包,只需完全跳过解包/打包并将其作为普通参数/参数传递/接收。
标签: python python-3.x list function statistics