使用此方法可以正常添加:
for poss in pos:
df = df.append([[poss,'1']], ignore_index=True)
这可以写成一行吗?这种方式显示语法错误。
df = df.append([[poss,'1']], ignore_index=True) for poss in pos
答案 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循环要好得多。这只是对一行的重写。可能还有其他方法可以修改您的数据。