附加列表列表并有效地添加列

时间:2018-03-14 07:59:57

标签: python python-3.x pandas dataframe

使用此方法可以正常添加:

for poss in pos:
    df = df.append([[poss,'1']], ignore_index=True)

这可以写成一行吗?这种方式显示语法错误。

df = df.append([[poss,'1']], ignore_index=True) for poss in pos

2 个答案:

答案 0 :(得分:1)

不,不是。您似乎希望使用列表推导语法来单个化多个方法调用。你不能这样做。

相反,您可以做的是将列表元素聚合到数据框中并一次追加。循环中df.append与从列表列表构建数据帧并仅追加一次也是低效的。

df = df.append(pd.DataFrame(pos, columns=player_df.columns))

这假设pos是一列列表,列中的列与df对齐。

如果您需要在“一行”中添加额外的列,请尝试以下操作:

df = df.append(pd.DataFrame(pos, columns=player_df.columns)).assign(newcol=1)

答案 1 :(得分:0)

我认为这是可能的,但我无法测试它,因为我不使用这些数据类型而普通list.append不会返回结果列表。

from functools import reduce # Python3 only

df = reduce(lambda d, p: d.append([[p,'1']], ignore_index=True), pos, df)

无论如何,for循环要好得多。这只是对一行的重写。可能还有其他方法可以修改您的数据。