我有一个交易数据框.每行代表两个项目的交易(将其视为2个事件票据或其他事务的交易).我想根据销售数量复制每一行.
这是示例代码:
# dictionary of transactions
d = {'1': ['20', 'NYC', '2'], '2': ['30', 'NYC', '2'], '3': ['5', 'NYC', '2'], \
'4': ['300', 'LA', '2'], '5': ['30', 'LA', '2'], '6': ['100', 'LA', '2']}
columns=['Price', 'City', 'Quantity']
# create dataframe and rename columns
df = pd.DataFrame.from_dict(data=d, orient='index')
df.columns = columns
Run Code Online (Sandbox Code Playgroud)
这会生成一个如下所示的数据框
Price City Quantity
20 NYC 2
30 NYC 2
5 NYC 2
300 LA 2
30 LA 2
100 LA 2
Run Code Online (Sandbox Code Playgroud)
因此,在上面的情况中,每行将转换为两个重复的行.如果'quantity'列为3,那么该行将转换为三个重复行.
我有一个 Pandas 数据框,其中包含变量名称、每个变量的值和count(显示该行的频率):
df = pd.DataFrame({'var':['A', 'B', 'C'], 'value':[10, 20, 30], 'count':[1,2,3]})
var value count
A 10 1
B 20 2
C 30 3
Run Code Online (Sandbox Code Playgroud)
我想用来count获得这样的输出:
var value
A 10
B 20
B 20
C 30
C 30
C 30
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
我正在寻找复制数据帧行的最有效的解决方案。每行应复制 x 次,其中 x 对于每行都是唯一的。
假设这是我给定的数据框:
| id | count |
|----|-------|
| a | 1 |
| b | 2 |
| c | 5 |
Run Code Online (Sandbox Code Playgroud)
结果数据框应如下所示,其中每行都按照“count”列中给出的数量进行复制:
| id | count |
|----|-------|
| a | 1 |
| b | 2 |
| b | 2 |
| c | 5 |
| c | 5 |
| c | 5 |
| c | 5 |
| c | 5 |
Run Code Online (Sandbox Code Playgroud)
一个非常基本的方法是循环数据帧并附加行 x 次,如下所示:
data = {'id': …Run Code Online (Sandbox Code Playgroud) 我想通过根据数量列中的值重复行来扩展以下Polars数据框。
原始数据框:
| 水果 | 数量 |
|---|---|
| 苹果 | 2 |
| 香蕉 | 3 |
预期输出:
| 水果 | 数量 |
|---|---|
| 苹果 | 1 |
| 苹果 | 1 |
| 香蕉 | 1 |
| 香蕉 | 1 |
| 香蕉 | 1 |
这是一个非常相似的问题,但使用 Pandas 而不是 Polars:Repeat rows in a pandas DataFrame based on column value
Polars 重复函数似乎没有提供与 Pandas 对应函数相同的功能:https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.repeat.html