繁体   English   中英

如何简化dataframe的for循环?

[英]How to simplify the for loop of dataframe?

我想简化这些类似的代码,这似乎很容易,但我做不到。

df_ls1_speci = []
for df in df_ls1:
    value = pd.Series(df.values.ravel('F'))
    value = list(value[len(df["column"]):])
    df_ls1_speci.append(value)

df_ls_speci = []
for df in df_ls:
    value = pd.Series(df.values.ravel('F'))
    value = list(value[len(df["column"]):])
    df_ls_speci.append(value)

df_ls 和 df_ls1 都是 dataframe 的类型。 如果我写

for df in df_ls, df_ls1:

它不能工作,因为'list' object 没有属性'values'。 那么其他方法可以解决吗?

这取决于您要解决的问题,如果您想在 dataframe 列表中循环两次以创建两个列表,您可以考虑将其写入 function。

def dataframe_list_to_list(df_ls)
    out_df_ls_speci = []
    for df in df_ls:
        value = pd.Series(df.values.ravel('F'))
        value = list(value[len(df["column"]):])
        out_df_ls_speci.append(value)
    return out_df_ls_speci

df_ls1_speci = dataframe_list_to_list(df_ls1)
df_ls_speci = dataframe_list_to_list(df_ls)

如果您只想获得一个 output,那么您可以连接两个列表并循环一次——您仍然可以使用上面显示的 function。

df_ls_all = dataframe_list_to_list(df_ls1 + df_ls)

您可以像这样将列表理解(这是有效的)与 function 一起使用:

def get_dataframes_values_list(dataframes):
      return [list(pd.Series(df.values.ravel('F'))[len(df["column"]):]) for df in dataframes]

df_ls_speci = get_dataframes_values_list(df_ls)

df_ls1_speci = get_dataframes_values_list(df_ls1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM