Python Pandas在一行中插入行数据

问题描述 投票:2回答:2

我有一个列表messages的消息,当这个列表中的每个消息,是一个有5个项目的对象 - name, message, action, date, location。我想用这些信息填充我的数据框。

目前,我这样做如下:

j = 1
df = pd.DataFrame(index=range(1, len(messages)+1), columns=['name','message','action','date', 'location'])
for message in messages:

    df.ix[j]['name'] = message.name
    df.ix[j]['message'] = message.message
    df.ix[j]['action'] = message.action
    df.ix[j]['date'] = message.date
    df.ix[j]['location'] = message.location
    j += 1

我觉得索引不是我能想到的最好的解决方案。还有其他办法吗?也许没有使用df.ix[j]几次。

python python-3.x pandas dataframe
2个回答
4
投票

我认为更好的是创建元组列表然后DataFrame构造函数:

dfs = [(m.name, m.message, m.action, m.date, m.location) for m in messages]

df = pd.DataFrame(dfs, 
                  index=range(1, len(messages)+1), 
                  columns=['name','message','action','date', 'location'])

1
投票

您还可以使用嵌套的理解。这允许您集中选择属性/列。

cols = ['name', 'message', 'action', 'date', 'location']

lst = [tuple(getattr(m, col) for col in cols) for m in messages]

df = pd.DataFrame(lst, index=range(1, len(messages)+1), columns=cols)
© www.soinside.com 2019 - 2024. All rights reserved.