【问题标题】:Writing output of a for loop to pandas data-frame将 for 循环的输出写入 pandas 数据帧
【发布时间】:2020-03-29 03:53:51
【问题描述】:

如何将 for 循环的输出写入 pandas 数据帧?

输入数据是数据帧列表 (df_elements)。

[                          seq  score    status
1652  TGGCTTCGATTTTGTTATCGATG  -0.22  negative
1277  GTACTGTGGAATCTCGGCAGGCT   4.87  negative
302   CCAAAGTCTCACTTGTTGAGAAC  -4.66  negative
1756  TGGCGGTGGTGGCGGCGCAGAGC   1.55  negative
5043  TGACGAAACATCTTATAAAGGAA   1.96  negative
3859  CAGAGCTCTTCAAACTTAAGAAC  -0.39  negative
1937  GTATGCTTGTGCTTCTCCAAAAA  -0.91  negative
2805  GGCCGGCCTGTGGTCGACGGGGA  -3.26  negative
3353                CCGATGGGC  -1.97  negative
5352  ACTTACTATTTACTGATCAGCAC   3.53  negative
5901  TTGAGGCTCTCCTTATCCAGATT   6.37  negative
5790  AAGGAAACGTGTAATGATAGGCG  -2.69  negative,                           seq  score    status
2197  CTTCCATTGAGCTGCTCCAGCAC  -0.97  negative
1336  CCAAATGCAACAATTCAAAGCCC  -0.44  negative
4825                CAATTTTGT  -6.44  negative
4991  ATACTGTTTGCTCACAAAAGGAG   2.15  negative
1652  TGGCTTCGATTTTGTTATCGATG  -0.22  negative
1964  ACCACTTTGTGGACGAATACGAC  -4.51  negative
4443  TTCCTCGTCTAGCCTTTCAGTGC   3.05  negative
4208  TGGCTGTGAACCCCTATCAGCTG   2.70  negative
212   CTGTCGTTTCAATGTTTAAGATA   6.43  negative
775                 GCTTTAAGT   0.06  negative
3899                GAGCAAAGC  -6.61  negative

我正在尝试将以下 for 循环的输出写入数据帧。我尝试创建一个空列表(数据)并使用 data.append 追加逐行输出。我收到类似 cannot concatenate object of type "";

之类的错误

下面给出的代码在控制台中打印输出:


cut_off = [0,1,2]

for co in cut_off:
    for df in df_elements:
        print co, "\t", str((df['score'] > co).sum())

代码应将 cut_off 值与列分数进行比较,并打印每个数据框元素的总和,其中分数大于 cut_off。

输出应如下所示:

cutoff number
0   5  #for first dataframe element
0   5  #for second dataframe element

【问题讨论】:

  • 这对我有用。列表的元素是熊猫数据框吗?你确定吗?
  • 另外,如果你使用的是python 3,别忘了给print加上括号

标签: python pandas dataframe


【解决方案1】:
# create empty lists for cutoff and number
cutoff_list = []
number_list = []

# loop through cutoff values and dataframes, to populate your lists
for co in cut_off:
    for df in df_elements:
        cutoff_list.append(co)
        number_list.append((df['score'] > co).sum())

# create dataframe from your lists
df = pd.DataFrame(list(zip(cutoff_list , number_list)), 
           columns =['cutoff', 'number']) 

# get your desired output
print(df)

【讨论】:

  • 如果需要此解决方案,请考虑接受。在其他情况下,让我知道如何改进它,干杯。
  • 效果很好!!你能向我解释一下这部分吗? pd.DataFrame(list(zip(cutoff_list , number_list)), columns =['cutoff', 'number'])。 list 和 zip 函数有什么作用?
  • @ranusharma Zip 是一个将项目绑定在一起的生成器。我相信要理解这一点,您可以运行一个像这样的玩具示例:a = [1,2] b = [3,4] c = [5,6] for item in zip(a, b, c): print(item) list(zip(a, b, c))
猜你喜欢
  • 2020-07-12
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多