如何从熊猫列表列表中导出列

时间:2019-12-06 02:34:53

标签: pandas

我有一个熊猫数据框(df)和一个列表列表(mylist),如下所示。

node, item1, item2
n1, 25, 32
n2, 28, 31
n3, 33, 35

mylist = [['n5', 32], ['n2', 18], ['n1', 12]]

我想用df的值向我的mylist添加一个新列,如下所示。

node, item1, item2, item3
n1, 25, 32, 12
n2, 28, 31, 18
n3, 33, 35, 0

请注意,如果节点不在mylist中,则该值为零。

我能够检查该值是否为mylist,如果不为零。但是,我在考虑在熊猫中是否有更简单的方法。

mylist_nodes = []
for item in mylist:
    mylist_nodes.append(item[0])
#check if the node is in mylist
df["item3"] = df_features["node"].isin(mylist_nodes).astype(int)

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

将列表转换为数据框,然后使用合并。

import pandas as pd
df = pd.DataFrame({
  'node': ['n1', 'n2', 'n3'],
  'item1': [25,28,33],
  'item2': [32,31,35]
})
mylist = [['n5', 32], ['n2', 18], ['n1', 12]]
df2 = pd.DataFrame(mylsit, columns=['node', 'item3'])
final = df.merge(df2, how='left', on='node').fillna(0)

# final outputs:

  node  item1  item2  item3
0   n1     25     32   12.0
1   n2     28     31   18.0
2   n3     33     35    0.0

如果结果数据框需要item3为整数,则可以将其强制转换为整数。在我安装的熊猫版本(0.25.2)上,它变为浮点数,因为整数不支持空值,我相信在下一个熊猫版本中该值已更改。

广播可以按照以下步骤进行:

final['item3'] = final.item3.astype('int8')