操作数据框字典中的元素

时间:2019-07-02 14:36:50

标签: python pandas

我正在尝试遍历数据帧的字典。对于字典中的每个df,我尝试将两列添加到列表中,执行一些操作,然后将此列表添加到单独的主数据帧中。

我如何尝试访问字典的每个元素:

for k in range(len(dict_of_df)):
    l = dict_of_df[['Name1', 'Name2']][k].to_list()

然后,我尝试从此列表中删除所有重复项,并将其余项的组合附加到主df的两个单独列中。

例如,从头开始给出以下数据框:

Name1    Name2    Color    Size
 Jim      Bob      R         L
 Sam      Jim      G         S

Name1 & Name2列将被发送到这样的列表:

 l
Jim
Bob
Sam
Jim

删除重复项将离开:

 l
Jim
Bob
Sam

并将这些项目的组合插入到主df中将产生:

 Name1   Name2
  Jim     Bob
  Jim     Sam
  Sam     Bob

1 个答案:

答案 0 :(得分:3)

您可以使用itertools.combinations,一次使用两次。拼合名称列,然后删除重复项,再进行组合。

# pandas >= 0.24
from itertools import combinations

names = pd.Series(
    df[['Name1', 'Name2']].to_numpy().ravel()).drop_duplicates()
pd.DataFrame(combinations(names, 2), columns=['name1', 'name2'])

  name1 name2
0   Jim   Bob
1   Jim   Sam
2   Bob   Sam

# pandas < 0.24
# .to_numpy() -> .values
# combinations(...) -> list(combinations(...)) # iterators not supported
names = pd.Series(df[['Name1', 'Name2']].values.ravel()).drop_duplicates()
pd.DataFrame([*combinations(names, 2)], columns=['name1', 'name2'])

  name1 name2
0   Jim   Bob
1   Jim   Sam
2   Bob   Sam