【问题标题】:Adding a list as a column to a Data Frame on python将列表作为列添加到python上的数据框
【发布时间】:2021-09-14 01:56:04
【问题描述】:

我有一个数据框和列表,这些列表是我使用数据框上的值从一些 for 循环中生成的。但是我希望这个列表成为数据框的列。

archivo=pd.read_csv('winequalityN.csv')  #this is my file
Y=archivo['quality'] #a column from the data frame  

y1=[]
for y in Y:
    if y < 7:
        y1.append(0)
    else:
        y1.append(1)
y2=[]
for y in Y:
    if 5<= y < 7:
        y2.append(1)
    else:
        y2.append(0)
y3=[]
for y in Y:
    if y < 5:
        y3.append(1)
    else:
        y3.append(0)

我想在我的数据框上为每个列表创建一列。

【问题讨论】:

  • 只是一个巧妙的技巧。可以简化一些构造:y1 = [int(y &gt;= 7) for y in Y]
  • 我不清楚目标是什么。您是否正在寻找类似archivo['new col'] = archivo['quality'].ge(7).astype(int) 的东西(对于第一个)?你以后需要其他东西的清单吗?您是将列表添加到列中的单元格还是动态构建新列?
  • 我的目标是将 y1、y2 和 y3 添加为档案的列。我只是不清楚该怎么做。

标签: python pandas dataframe for-loop


【解决方案1】:

为了简化数据,假设数据是 3 个数字列表

data = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

data = [y1,y2,y3] 相同。使用这种方法可以快速旋转。

>>> data = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> [list(x) for x in zip(*data)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

所以你可以把它转储到 DF

>>> pd.DataFrame([list(x) for x in zip(*data)])
   0  1   2
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12
>>>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2019-09-08
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多