【发布时间】:2019-10-02 14:37:02
【问题描述】:
我在下面有一个数据框,其中包含每行的列表的“样本”列。我想把这些变成一套。我的预期输出将是“样本”列中的每一行,因为它已变成一个集合,因此不包含任何重复项。有什么想法吗?
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'trial_num': [1, 2, 3, 1, 2, 3],
'subject': [1, 1, 1, 2, 2, 2],
'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
}
)
预期输出如下:
trial_num subject samples
0 1 1 {0.75, 0.87, -0.54}
1 2 1 {-0.67, 1.5, -0.46}
2 3 1 {0.13, -0.56, -0.11}
3 1 2 {-0.78, 0.48, 1.03}
4 2 2 {0.13, 0.62, -0.14}
5 3 2 {0.61, -0.59, 0.43}
【问题讨论】:
-
df.join(pd.DataFrame(df.samples.tolist(),index=df.index))这是转换为数据帧,df['samples'] = df['samples'].map(set),这是设置 -
你能提供一个小的预期输出吗? WeNYoBen 和 Quang 描述了多种方式。您期待哪种输出?
-
df['samples'] = df['samples'].map(set) 是我需要的。多谢你们!添加了预期的输出。
-
@WeNYoBen 有没有办法避免将 {set} 放在空白的样本列中?
-
@acodejdatam 我已经添加了解决方案,使用 np,where