Python将具有5列的5行表制作为具有11行的单行表



我有一个5行5列的数据帧,我想制作一个1行的新数据帧。我试过使用枢轴,但我不需要agg,我不知道下一步该怎么做。

我使用了Scott Boston在这个链接中的回答来完成这项工作。如何根据多列的值使用python panda将多行合并为一行?

起始表格

州>客户<29>451>//tr>NY>>
ID销售
0 1234 MN 44 23
1 1234 MN 45 25
2 1234 MN 51 27
3 1234 MN 47
4 1234 MN 44 29
0 5555 纽约 441 231
1 5555 纽约251
2 5555 纽约 511 271
3 5555471291
4 5555 NY 441291

您可以使用itertools.chain模块来压平数据输入,然后可以删除不需要的列。

这里有一个例子:

from itertools import chain
import pandas as pd

data = [
['0', '1234','MN',44,23],
['1', '1234','MN',45,25],
['2', '1234','MN',51,27],
['3', '1234','MN',47,29],
['4', '1234','MN',44,29]
]
columns = ['month', 'ID', 'state', 'sales', 'customer']
flattened = chain.from_iterable(data)
cols = columns + [
f"{j}_{k}" for k in range(len(columns) -1) for j in columns
]
df = pd.DataFrame([list(flattened)], columns=cols)
columns_to_drop = ['month'] + [
f"{j}_{k}" for k in range(len(columns) - 1) for j in ['ID', 'month']
]
df.drop(columns=columns_to_drop, inplace=True)
print(df)

输出:

ID state  sales  customer state_0  sales_0  customer_0 state_1  sales_1  customer_1 state_2  sales_2  customer_2 state_3  sales_3  customer_3
0  1234    MN     44        23      MN       45          25      MN       51          27      MN       47          29      MN       44          29

最新更新