我該如何改變這個:
| 日期 | 網址 | 描述 | 類別 |
|---|---|---|---|
| 2022-06-17 14:24:52 | /XYBkLO | 上市 | 一個 |
| 2022-06-17 14:24:52 | /XYBkLO | 上市 | 乙 |
| 2022-06-17 14:24:52 | /XYBkLO | 上市 | C |
| 2022-06-17 14:25:05 | /ZWrTVu | 上市 | 一個 |
| 2022-06-17 14:25:05 | /ZWrTVu | 上市 | 乙 |
| 2022-06-17 14:25:05 | /ZWrTVu | 上市 | C |
對此:
| 日期 | 網址 | 描述 | 類別 | 日期 | 網址 | 描述 | 類別 | 日期 | 網址 | 描述 | 類別 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2022-06-17 14:24:52 | /XYBkLO | 上市 | 一個 | 2022-06-17 14:24:52 | /XYBkLO | 上市 | 乙 | 2022-06-17 14:24:52 | /XYBkLO | 上市 | C |
| 2022-06-17 14:25:05 | /ZWrTVu | 上市 | 一個 | 2022-06-17 14:25:05 | /ZWrTVu | 上市 | 乙 | 2022-06-17 14:25:05 | /ZWrTVu | 上市 | C |
我想在一行中保留所有具有相同 URL 的內容,但我不知道如何使用 pandas 來實作這一點。我應該使用另一種方法或另一個庫嗎?真的可以使用一些幫助
uj5u.com熱心網友回復:
你可以試試:
from itertools import cycle, count, islice
from collections import defaultdict
def fn(x):
d = defaultdict(lambda: count(1))
names = cycle(x.columns)
vals = x.values.ravel()
return pd.DataFrame(
[vals],
columns=[f"{n}.{next(d[n])}" for n in islice(names, len(vals))],
)
x = df.groupby("URL").apply(fn).reset_index(drop=True)
print(x)
印刷:
Date.1 URL.1 Description.1 Category.1 Date.2 URL.2 Description.2 Category.2 Date.3 URL.3 Description.3 Category.3
0 2022-06-17 14:24:52 /XYBkLO public A 2022-06-17 14:24:52 /XYBkLO public B 2022-06-17 14:24:52 /XYBkLO public C
1 2022-06-17 14:25:05 /ZWrTVu public A 2022-06-17 14:25:05 /ZWrTVu public B 2022-06-17 14:25:05 /ZWrTVu public C
uj5u.com熱心網友回復:
您可以查看 pandas 轉置功能。轉置
不是 100% 確定它是否適合您的用例,但它似乎是一個不錯的起點。
uj5u.com熱心網友回復:
這是另一種方式:
(pd.concat(
[df.set_index('URL',drop=False) for _,df in df.groupby('Category')]
,axis=1)
.reset_index(drop=True))
輸出:
Date URL Description Category Date URL Description Category Date URL Description Category
0 6/17/2022 14:24 /XYBkLO public A 6/17/2022 14:24 /XYBkLO public B 6/17/2022 14:24 /XYBkLO public C
1 6/17/2022 14:25 /ZWrTVu public A 6/17/2022 14:25 /ZWrTVu public B 6/17/2022 14:25 /ZWrTVu public C
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492555.html
標籤:Python 熊猫 CSV 熊猫-groupby 熊猫合并
