根据两列查找pandas Dataframe中的groupby中的公共值



我有以下数据帧:

period    symptoms   recovery
1         4          2
1         5          2
1         6          2
2         3          1
2         5          2
2         8          4
2         12         6
3         4          2
3         5          2
3         6          3
3         8          5
4         5          2
4         8          4
4         12         6

我试图找到df['period']组(1,2,3,4)基于值的共同值"症状"one_answers"恢复"两列

结果应该是:

symptoms   recovery   period
5          2          [1, 2, 3, 4]
8          4          [2, 4]

,其中每个相同的两个列值在列表或列中出现的句点。

我处理问题的方式不对吗?谢谢你的帮助。

我试图将每个周期转换为字典并循环查找值,但对我不起作用。还尝试使用grouby().apply(),但我没有得到有意义的数据帧。尝试基于3列排序值,但无法获得每个周期部分之间的共同值。最后一次尝试:

df2 = df[['period', 'how_long', 'days_to_ex']].copy()
#s = df.groupby(["period", "symptoms", "recovery"]).size()
s = df.groupby(["symptoms", "recovery"]).size()

你就快到了:

from io import StringIO
import pandas as pd
# setup sample data
data = StringIO("""
period;symptoms;recovery
1;4;2
1;5;2
1;6;2
2;3;1
2;5;2
2;8;4
2;12;6
3;4;2
3;5;2
3;6;3
3;8;5
4;5;2
4;8;4
4;12;6
""")
df = pd.read_csv(data, sep=";")
# collect unique periods
df.groupby(['symptoms','recovery'])[['period']].agg(list).reset_index()

这给

symptoms  recovery        period
0         3         1           [2]
1         4         2        [1, 3]
2         5         2  [1, 2, 3, 4]
3         6         2           [1]
4         6         3           [3]
5         8         4        [2, 4]
6         8         5           [3]
7        12         6        [2, 4]

最新更新