gpt4 book ai didi

python - 当其他 2 列的元组唯一时,Pandas 添加新列并用列表中的项目填充它

转载 作者:行者123 更新时间:2023-11-28 22:16:03 27 4
gpt4 key购买 nike

我目前正在尝试将列表的一些值添加到我的 pandas 表中的新列中。col3 的第一个值是列表的第一个。如果 col1col2 的元组仍然相同,则第二个值相同。开始添加列表的下一项的条件是它是列 col1col2 中项目的新的唯一组合。

例子:

df = pd.DataFrame({'col1':[1,1,1,1,3,3,3,10], 'col2':[1,1,2,2,9,9,9,5]})

list1=[5,9,3,12]
col1 col2 col1 col2 col3
1 1 1 1 5
1 1 1 1 5
1 2 should become 1 2 9
1 2 ------------------> 1 2 9
3 9 3 9 3
3 9 3 9 3
3 9 3 9 3
10 5 10 5 12

我让它只使用 1 列作为这样的条件:

di =dict(zip(df['col1'].unique(),list1))
df['col2'] = df_averageInPanda['col1'].map(di)

为了在元组条件下运行它,我尝试了 drop_duplicate(),因为 unique() 函数对多列不起作用,但它不起作用,但是给我一个空的 col3

di =dict(zip(df[['col1','col2']].drop_duplicates(),list1))
df['col3'] = df['col1'].map(di)

知道如何解决吗?

最佳答案

这是另一种方法。您可以使用 Pandas 创建一个包含唯一行(保持顺序)的新数据框并分配一个新列。然后将其与您的原始数据框合并:

res = df.merge(df.drop_duplicates().assign(col3=list1))

print(res)

col1 col2 col3
0 1 1 5
1 1 1 5
2 1 2 9
3 1 2 9
4 3 9 3
5 3 9 3
6 3 9 3
7 10 5 12

关于python - 当其他 2 列的元组唯一时,Pandas 添加新列并用列表中的项目填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com