【问题标题】:Convert list to dataframe by adding list values to df within for loop pandas通过将列表值添加到 for 循环 pandas 中的 df 将列表转换为数据框
【发布时间】:2021-02-01 22:18:44
【问题描述】:

我有一个简单的列表

检索 i、v 列表的代码:

 for i, v in enumerate(list_name_1):
    print(i, v)

输出

    5 -100
    4 30
    0 -90
    1 -80
    3 100
    2 1000
    and so on

我希望将所有这些存储在一个数据框中。

问题是我在 for 循环中对 list_name_1 进行了大量计算,因此我只需要在 for 循环中捕获 i 和 v 值。所以我不能做一个简单的df=pd.DataFrame(list_name_1) 例如

我需要做如下的事情:

df = []
 for i, v in enumerate(list_name_1):
        print(i, v)
        some code to add i,v iteratively in columns i and v of df

【问题讨论】:

  • 您说“... of a dataframe with column names i and v”,但在您的示例中,list_name_1 中的所有条目都是唯一的,因此 DataFrame 应该有很多列,并且行数很少?
  • 嗨,在列表中,我们只有 2 种类型的值 i 和 v。我想将它们转换为具有 2 列 i 和 v 的数据框。所以 df 将有 2 列和许多行
  • 基本上列出的是特征重要性。 i 是特征编号,v 是特征的值。所以我想在 df 中获取这些数据并能够以 df 格式对其进行一些操作
  • 我添加了一个我认为可以满足您需求的答案。让我知道是否有任何不清楚的地方

标签: python pandas dataframe


【解决方案1】:

一个想法是创建两个列表,一个存储i 的计算值,一个存储v。所以:

i_values = []
v_values = []
for i, v in enumerate(list_name_1):
    print(i, v)
    # Make calculations for i and v
    i_values.extend([calculated_i])
    v_values.extend([calculated_v])

df = pd.DataFrame(data={"i": i_values, "v": v_values})

【讨论】:

  • NameError: name 'calculated_i' is not defined 错误。我收到此错误
  • 效果很好,谢谢。而不是 computed_i 替换为 i
  • 我的印象是你想在循环中进行计算,这就是我打电话给他们calculated_i的原因。但是,嘿,如果它有效并且您满意,那就太好了!
【解决方案2】:

我认为你应该为此使用预定义的语法。使用 for 循环真的很长。

import pandas as pd

L = ["This","Is","A","List"]
M = ["This","Is","Also","List"]
#create new dataframe
df = pd.DataFrame({'col':L,'col2':M})
print (df)


           col  col2
       0  This  This
       1    Is    Is
       2     A  Also
       3  List  List

【讨论】:

    【解决方案3】:

    我认为你可以这样做:

    for i, v in enumerate(list_name_1):
        diction = {'i': i, 'v': v}
        df = df.append(diction, ignore_index=True)
        
    

    我不知道你是怎么计算的,但我认为这是捕获所有值的好方法。

    【讨论】:

    • 如果list_name_1 很长,循环会变得很慢并且性能会下降,因为df.append() 在循环中通常是不好的做法。您可以在此处阅读有关原因的更多信息:stackoverflow.com/questions/27929472/…
    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2021-08-21
    • 2020-04-25
    • 2017-06-22
    相关资源
    最近更新 更多