考虑两个 Dataframe :
>> import pandas as pd
>> df1 = pd.DataFrame({"category": ["foo", "foo", "bar", "bar", "bar"], "quantity": [1,2,1,2,3]})
>> print(df1)
category quantity
0 foo 1
1 foo 2
2 bar 1
3 bar 2
4 bar 3
>> df2 = pd.DataFrame({
"category": ["foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar", "bar", "bar"],
"item": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
})
>> print(df2)
category item
0 foo A
1 foo B
2 foo C
3 foo D
4 bar E
5 bar F
6 bar G
7 bar H
8 bar I
9 bar J
如何在df1
中创建一个新列(新 Dataframe 称为df3
),它连接df1
的category
列并分配df2
中的item
列。
>> df3 = pd.DataFrame({
"category": ["foo", "foo", "bar", "bar", "bar"],
"quantity": [1,2,1,2,3],
"item": ["A", "B,C", "E", "F,G", "H,I,J"]
})
category quantity item
0 foo 1 A
1 foo 2 B,C
2 bar 1 E
3 bar 2 F,G
4 bar 3 H,I,J
3条答案
按热度按时间7bsow1i61#
您可以通过
quantity
列Index.repeat
与DataFrame.loc
重复行来创建帮助器DataFrame,将索引转换为列以避免丢失indices
,并在两个DataFrame中创建帮助器列g
,以便通过复制categories
与GroupBy.cumcount
合并,然后使用DataFrame.merge
与聚合join
:vwoqyblh2#
您可以将迭代器用于
itertools.islice
:输出:
请注意,如果您没有足够的项目,这将只使用可用的项目。
使用在F之后截断的
df2
作为输入的示例:cxfofazt3#
出局