【问题标题】:merge multiple lists into one list in python using for loop使用for循环在python中将多个列表合并为一个列表
【发布时间】:2021-02-23 05:36:20
【问题描述】:

我有一个代码可以返回数据框中每一列的最大值,直到现在它将每个值作为一个单独的列表返回,所以如果我有 3 个值,它会返回 3 个列表,每个列表包含一个项目。

我想要的是返回一个包含所有项目的列表。

returned list: 
[1]
[509]
[92]
[332]
[14]

expected result:
[1,509,92,332,14]

代码:

import pandas as pd

df = pd.Dataframe({'event_type': ['watch movie ', 'stay at home', 'swimming','camping','meeting'], 
               'year_month': ['2020-08', '2020-05', '2020-02','2020-06','2020-01'],
                'event_mohafaza':['loc1','loc3','loc2','loc5','loc4'],
                 ' number_person ':[24,39,20,10,33],})

grouped_df=pd.crosstab(df['year_month'], df[event_type])
print(type(grouped_df))
                        
for x in grouped_df.columns:                
     mx = []
     maxvalue =grouped_df[x].max() 
     mx.append(maxvalue)
     print(mx)

【问题讨论】:

  • 您的代码不起作用。请更正:DataframeDataFrame,df[event_type]df['event_type']

标签: python pandas list for-loop


【解决方案1】:

您可以在进入循环之前定义您的列表并在之后打印它。

mx = []
for x in grouped_df.columns:                
     maxvalue = grouped_df[x].max() 
     mx.append(maxvalue)
print(mx)

您也可以使用内置的max 函数。

print(grouped_df.max())

【讨论】:

    【解决方案2】:
    1. 无需使用grouped_df.colums;一个数据框遍历列无论如何

      for x in grouped_df:
      
    2. 在您的for 循环中,您每次都会清除您的列表mx;您可能只想清除一次,即您的for循环之前:

      mx = []
      for x in grouped_df:
      
    3. 在您的 for 循环中,您每次都打印您的列表 mx(新清除并仅附加一个 - 当前 - 元素)。
      您可能只想打印一次,在所有元素都将被附加之后,你的循环之后。

    所以你更正的代码应该是:

    mx = []
    for x in grouped_df:
        maxvalue = grouped_df[x].max() 
        mx.append(maxvalue)
    print(mx)
    

    注意:

    在 pandas 中手动迭代数据总是很可疑——通常,通常有更优雅的“pandasonic”解决方案。

    在你的情况下,你可以简单地打印

    list(grouped_df.max())
    

    grouped_df.max().to_list()
    

    grouped_df.max() 是一个系列list() 函数或.to_list() 方法从中生成一个列表。)

    【讨论】:

    • 感谢MarianD的详细解释!
    • 感谢您对我不知道的优雅“pandasonic”解决方案的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2018-01-22
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多