我一直在try 添加列表到单元格中的一个框架.简化后的框架看起来像这样:

Participant Session Column_C
1 1
2 1
3 1
3 2
4 1
4 2

大多数参与者只有一次录音会议,但也有一些人有两次.我想将每个列表添加到列C的单个单元格中,对应于正确的参与者和会话ID.因此,将列表添加到正确的参与者(例如4)和会话(例如1)后,它应该如下所示:

Participant Session Column_C
1 1
2 1
3 1
3 2
4 1 [1, 2, 3]
4 2

我的第一个try 是使用df.loc()的条件

df.loc[((df['participant'] == '4') & (df['session'] == 1)), 'Column_C'] = [1, 2, 3]

然而,这给出了以下错误:'ValueError:当使用iterable设置时,必须具有相等的len键和值'

在其他线程中提到,为了在单个嵌套单元格中设置列表/元组/数组,您需要使用df.at().然而,我不知道如何在使用.at()时包含这些条件.

其他线程也提到必须将列的数据类型设置为对象.但是,即使在确保将该列设置为Object之后,我仍然收到相同的错误.

有没有什么方法可以在包含条件的同时将列表/元组/数组添加到Pandas 数据框单元格中?

提前谢谢!

推荐答案

您可以使用以下代码:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Participant':[1,2,3,3,4,4], 'Session' :[1,1,1,2,1,2]})
df['Column_C']=np.nan
df['Column_C'] = df['Column_C'].mask((df['Participant']==4) & (df['Session'] == 1) ,pd.Series([[1,2,3]]*df.shape[0]))
df

Python相关问答推荐

如何计算两极打印机中 * 所有列 * 的出现次数?

如果条件为真,则Groupby.mean()

对Numpy函数进行载体化

如何使用pandasDataFrames和scipy高度优化相关性计算

Matlab中是否有Python的f-字符串等效物

重新匹配{ }中包含的文本,其中文本可能包含{{var}

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

对所有子图应用相同的轴格式

cv2.matchTemplate函数匹配失败

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

无法连接到Keycloat服务器

合并与拼接并举

人口全部乱序 - Python—Matplotlib—映射

Numpyro AR(1)均值切换模型抽样不一致性

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

如何根据rame中的列值分别分组值

没有内置pip模块的Python3.11--S在做什么?

是否需要依赖反转来确保呼叫方和被呼叫方之间的分离?