将x行合并为一行CSV、Pandas

rqcrx0a6  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(148)

我有一个 Dataframe ,看起来像这样:

ID  val1 val2 ... val10
1 1   45   2
2 1   34   90 
3 1   90   9
4 1   10   10
...
5000

我想合并val-columns,将10行(1-10、11-20...)合并为1行,这样看起来就像这样(ID每10行更改一次,我不想对数据进行排序,只需将10行合并为1行):

ID  val1 val2 ... val100
1 1   45   2
2 2   10   60 
3 3   40   9
4 4   1   140
...
500

我对Pandas还很陌生,我只能找到一个简单的方法来排序,然后通过相同的列值来合并行。问题是,我只想合并10行的val-columns,有时在我的日期中会再次出现相同的ID。

sgtfey8w

sgtfey8w1#

这应该做到:

import numpy as np
import pandas as pd

# create your input dataframe
df = pd.DataFrame({"ID": range(1, 5001)})
for n in range(1, 11):
    df[f"val{n}"] = np.random.randint(low=0, high=140, size=(5000, 1))

# initialize the output dataframe with the correct size and column names
out_df = pd.DataFrame(np.zeros((500, 100)))
out_df.columns = [f"val{n}" for n in range(1, 101)]
out_df.index += 1
out_df.index.name = "ID"

# copy the values from df to out_df
for n in range(10):
    out_df.iloc[0:500, n * 10: (n + 1) * 10 ] = df.copy().iloc[500 * n: 500 * (n+ 1), 1:]

相关问题