Pandas Dataframe将元素添加到单元格中列表

56lgkhnf  于 2022-12-02  发布在  其他
关注(0)|答案(3)|浏览(197)

我正在尝试这样的方法:List append in pandas cell
但问题是这个帖子太旧了,所有的东西都过时了,不应该再用了。

d = {'col1': ['TEST', 'TEST'], 'col2': [[1, 2], [1, 2]], 'col3': [35, 89]}
df = pd.DataFrame(data=d)

| 列1|第2列|第3列|
| - -|- -|- -|
| 测试|[一、二、三]|三十五|
| 测试|[一、二、三]|八十九|
我的Dataframe看起来像这样,其中col 2是我感兴趣的一个。我需要为DataFrame中的每一行向col 2中的列表添加[0,0]。我的真实的DataFrame是动态形状的,所以我不能只设置每个单元格。
最终结果应如下所示:
| 列1|第2列|第3列|
| - -|- -|- -|
| 测试|[1、2、3、0、0]|三十五|
| 测试|[1、2、3、0、0]|八十九|
我用df.applydf.assign做了一些尝试,但似乎无法让它工作。我尝试了:

df['col2'] += [0, 0]

df = df.col2.apply(lambda x: x.append([0,0]))
     Which returns a Series that looks nothing like i need it

df = df.assign(new_column = lambda x: x + list([0, 0))
daupos2t

daupos2t1#

不确定这是不是最好的方式去,但,选项2工程与一点修改

import pandas as pd

d = {'col1': ['TEST', 'TEST'], 'col2': [[1, 2], [1, 2]], 'col3': [35, 89]}
df = pd.DataFrame(data=d)
df["col2"] = df["col2"].apply(lambda x: x + [0,0])
print(df)

首先,如果要将可迭代对象的所有成员添加到列表中,请使用.extend而不是.append。这是行不通的,因为该方法在原地工作,并且不返回任何内容,因此“col2”值将变为None,因此请改用列表求和。最后,要将修改后的列分配给原始DataFrame,而不是覆盖它(这是Series返回的原因)

hfyxw5xn

hfyxw5xn2#

一个想法是使用列表理解:

df["col2"] = [x + [0,0] for x in  df["col2"]]
   
print (df)
   col1          col2  col3
0  TEST  [1, 2, 0, 0]    35
1  TEST  [1, 2, 0, 0]    89
ibps3vxo

ibps3vxo3#

你试过下面的代码吗?

for val in df['col2']:
    val.append(0)

此致,Stan

相关问题