簡體   English   中英

如何在 CSV 文件的 x 行數之后使用 Pandas 創建一個新列?

[英]How to create a new column with Pandas after x number of rows from a CSV file?

我有一個 CSV 文件,其中包含 2 列填充數據

Column_1 | Column_2
Data_1   | Data_1
Data_2   | Data_2
Data_3   | Data_3
Data_4   | Data_4
.
.
.

問題是我想重新組織行數,以便在 30 行之后,將創建兩個新列並適合其他 30 個列的 rest,這樣將是這樣的:

Column_1 | Column_2 | Column_3 | Column_4
Data_1   | Data_1   | Data_31  | Data_31
Data_2   | Data_2   | Data_32  | Data_32
Data_3   | Data_3   | Data_33  | Data_33
Data_4   | Data_4   | Data_34  | Data_34
.
.
.
Data_30   | Data_30 | Data_60  | Data_60

原因是我的工作場所浪費了太多的紙張來打印包含員工使用的所有對象的列表,並且我們需要每 6 個月左右進行一次庫存檢查,為此,我們必須打印包含所有對象的關系這些項目,所以我們可以做一個清單,他們使用的系統效率不高,因為它還會打印一堆無用的列,其中包含我們簡單不需要的數據。 我已經編寫了一個腳本來將數據清除到 CSV 中,但是我現在需要一種方法來使這個 CSV 適合列在右側,以便我們可以在使用另一張紙以適合更多列進行打印之前盡可能多地適合列。

使用 numpy divmod定義兩個輔助列[0, 0, 0, ..., 1, 1, 1, ...][0, 1, 2, ..., 0, 1, 2, ...]然后適當地 unstack unstack :

import numpy as np

df = pd.DataFrame({col: [f"Data_{i}" for i in range(1, 61)] for col in ["column_1", "column_2"]})

df["group"], df["index"] = np.divmod(np.arange(len(df)), 30)
df = df.set_index(["group", "index"]).unstack("group")
df.columns = [f"Column_{icol}" for icol in range(1, 1 + len(df.columns))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM