【问题标题】:Create a dataframe and populate the same using for loops in pandas创建一个数据框并使用 pandas 中的 for 循环填充相同的数据框
【发布时间】:2020-08-25 05:24:30
【问题描述】:

我在 Python 中有三个由字符向量组成的列表

 A=["A1", "B1", "C1"]
 B=["E1", "F1"]
 C=[]

我已经使用它创建了一个列表,如下所示

  import pandas as pd
  files_list=[]
  files_list.append(A)
  files_list.append(B) 
  files_list.append(C) 

我正在尝试创建以下数据框

   Value    Index
   A1       A
   B1       A
   C1       A
   D1       B
   E1       B
            C

我使用了以下循环

 L = pd.DataFrame()
 for file in files_list:
             page = file
             for j in page:
             #print (j)
             L["Value"]=j
             L["Index"]=file

我没有得到想要的输出,但是错误提示值的长度 (2) 与索引的长度 (3) 不匹配。

我也试过下面的代码

 L = pd.DataFrame()
    for file in files_list:
    page = file
    for j in page:
    data = list(zip((j), file))

这也没有产生所需的输出,并且只列出了几个条目 我请人看看

【问题讨论】:

  • 这没有回答你的问题stackoverflow.com/q/63571922/4985099。这个问题和你之前的帖子有什么不同?
  • 我在这里循环尝试。或者字典。该解决方案有效,但几乎是硬编码

标签: python pandas dataframe for-loop


【解决方案1】:

我建议在这里创建字典,然后将值展平为传递给 DataFrame 构造函数的元组列表:

A=["A1", "B1", "C1"]
B=["E1", "F1"]
C=[]
  
d = {'A':A, 'B':B, 'C':C}

out = []
for x, y in d.items():
    if len(y) > 0:
        for a in y:
            out.append((a, x))
    else:
        out.append((np.nan, x))
print (out)
[('A1', 'A'), ('B1', 'A'), ('C1', 'A'), ('E1', 'B'), ('F1', 'B'), (nan, 'C')]

df = pd.DataFrame(out, columns=['Value','Value'])
print (df)
  Value Value
0    A1     A
1    B1     A
2    C1     A
3    E1     B
4    F1     B
5   NaN     C

【讨论】:

  • 谢谢。但是为什么我的循环没有按预期工作。
  • @Raghavanvmvs - 我认为问题出在dictionary,如何创建?
  • 好的。所以我动态创建一个字典,然后将它转换成一个数据框
  • @Raghavanvmvs - 是的,它应该是最好的,如果有问题,请发布您的代码以创建它,我会尝试帮助。
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多