gpt4 book ai didi

python - 使用 Pandas 合并多个 CSV 文件以创建带有动态标题的最终 CSV 文件

转载 作者:行者123 更新时间:2023-12-04 08:56:18 25 4
gpt4 key购买 nike

我有 4 个 CSV 文件,以 \ttab 作为分隔符。

alok@alok-HP-Laptop-14s-cr1:~/tmp/krati$ for file in sample*.csv; do echo $file; cat $file; echo ; done
sample1.csv
ProbeID p_code intensities
B1_1_3 6170 2
B2_1_3 6170 2.2
B3_1_4 6170 2.3
12345 6170 2.4
1234567 6170 2.5

sample2.csv
ProbeID p_code intensities
B1_1_3 5320 3
B2_1_3 5320 3.2
B3_1_4 5320 3.3
12345 5320 3.4
1234567 5320 3.5

sample3.csv
ProbeID p_code intensities
B1_1_3 1234 4
B2_1_3 1234 4.2
B3_1_4 1234 4.3
12345 1234 4.4
1234567 1234 4.5

sample4.csv
ProbeID p_code intensities
B1_1_3 3120 5
B2_1_3 3120 5.2
B3_1_4 3120 5.3
12345 3120 5.4
1234567 3120 5.5
所有 4 个文件都有相同的标题。
所有文件的 ProbeID 相同,顺序也相同。每个文件在单个 CSV 文件中具有相同的 p_code
我必须以这种格式将所有这些 CSV 文件合并为一个。
alok@alok-HP-Laptop-14s-cr1:~/tmp/krati$ cat output1.csv 
ProbeID 6170 5320 1234 3120
B1_1_3 2 3 4 5
B2_1_3 2.2 3.2 4.2 5.2
B3_1_4 2.3 3.3 4.3 5.3
12345 2.4 3.4 4.4 5.4
1234567 2.5 3.5 4.5 5.5
在此输出文件中,列是基于 p_code 值的动态列。
我可以使用字典在 Python 中轻松完成此操作。如何使用 Pandas 产生这样的输出?

最佳答案

我们可以使用 pandas.concat 来实现这一点和 DataFrame.pivot_table :

import os
import pandas as pd

df = pd.concat(
[pd.read_csv(f, sep="\t") for f in os.listdir() if f.endswith(".csv") and f.startswith("sample")],
ignore_index=True
)

df = df.pivot_table(index="ProbeID", columns="p_code", values="intensities", aggfunc="sum")
print(df)

关于python - 使用 Pandas 合并多个 CSV 文件以创建带有动态标题的最终 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63816256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com