簡體   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