簡體   English   中英

如何使用 pandas 將多行轉換為同一 ID 的單行

[英]how to convert multiple rows into single row for same id using pandas

我有以下格式的文本文件,它具有唯一 ID,每個唯一 ID 有四行,現在我需要將特定 ID 轉換為單行。 假設如果有 8 行,output 應該有 2 行。 而且它沒有 header ,我需要使用熊貓!

    xyz,name,,,12345
    2nd street,add,,,12345
    xyx@mail.com,email,,,12345
    575xxx5678,contact,,,12345

output

xyz,name,,,12345,2nd street,add,,,12345,xyx@mail.com,email,,,12345,575xxx5678,contact,,,12345

將唯一 ID 視為 12345,可以幫助我解決此問題。 那會很好。 提前致謝。

假設你有這個file.csv

www,contact,,,99999
xyz,name,,,12345
2nd street,add,,,12345
xyx@mail.com,email,,,12345
575xxx5678,contact,,,12345
qqq,contact,,,99999

要將其讀取到 pandas:

df = pd.read_csv("file.csv", names=["col1", "col2", "col3", "col4", "ID"])
print(df)

印刷:

           col1     col2  col3  col4     ID
0           www  contact   NaN   NaN  99999
1           xyz     name   NaN   NaN  12345
2    2nd street      add   NaN   NaN  12345
3  xyx@mail.com    email   NaN   NaN  12345
4    575xxx5678  contact   NaN   NaN  12345
5           qqq  contact   NaN   NaN  99999

然后將其轉換為您想要的 output:

x = (
    df.assign(ID2=df["ID"])
    .groupby("ID")
    .agg(list)
    .apply(lambda x: [v for l in zip(*x) for v in l], axis=1)
)

pd.DataFrame(x.tolist()).to_csv("output.txt", sep=",", header=None, index=None)

這將創建output.txt

xyz,name,,,12345,2nd street,add,,,12345,xyx@mail.com,email,,,12345.0,575xxx5678,contact,,,12345.0
www,contact,,,99999,qqq,contact,,,99999,,,,,,,,,,

暫無
暫無

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

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