用大熊猫为每个组创建一个数据框组合(Create a DataFrame of combinations for each group with pandas)
输入如下。
Out[178]: group value 0 A a 1 A b 2 A c 3 A d 4 B c 5 C d 6 C e 7 C a对于这个输入,我想为每个组创建一个组合并创建一个DataFrame。 我该怎么做?
我想要得到的输出:
Out[180]: group 0 1 0 A a b 1 A a c 2 A a d 3 A b c 4 A b d 5 A c d 0 C d e 1 C d a 2 C e aThe inputs are as follows.
Out[178]: group value 0 A a 1 A b 2 A c 3 A d 4 B c 5 C d 6 C e 7 C aFor this input, I want to create a combination for each group and create one DataFrame. How can I do it?
The output I want to get:
Out[180]: group 0 1 0 A a b 1 A a c 2 A a d 3 A b c 4 A b d 5 A c d 0 C d e 1 C d a 2 C e a最满意答案
使用lambda函数和combinations groupby :
from itertools import combinations df = (df.groupby('group')['value'].apply(lambda x: pd.DataFrame(list(combinations(x,2)))) .reset_index(level=1, drop=True) .reset_index()) print (df) group 0 1 0 A a b 1 A a c 2 A a d 3 A b c 4 A b d 5 A c d 6 C d e 7 C d a 8 C e aUse groupby with lambda function and combinations:
from itertools import combinations df = (df.groupby('group')['value'].apply(lambda x: pd.DataFrame(list(combinations(x,2)))) .reset_index(level=1, drop=True) .reset_index()) print (df) group 0 1 0 A a b 1 A a c 2 A a d 3 A b c 4 A b d 5 A c d 6 C d e 7 C d a 8 C e a
更多推荐
发布评论