我有一行,我想基于這一行構建一個資料框。例如,我有一行 5 值。我想構建一個 4 行 5 列的 df。這是我想要的輸出:
df = pd.DataFrame()
df['a']=[1]
df['b']=[2]
df['c']=[3]
df['d']=[1]
df['e']=[2]
輸出:
a b c d e
0 1 2 3 1 2
1 1 2 3 1 2
2 1 2 3 1 2
3 1 2 3 1 2
你能幫我嗎?
uj5u.com熱心網友回復:
你可以repeat索引:
out = (df.loc[df.index.repeat(4)]
.reset_index(drop=True)
)
輸出:
a b c d e
0 1 2 3 1 2
1 1 2 3 1 2
2 1 2 3 1 2
3 1 2 3 1 2
使用的輸入:
d = {'a': [1], 'b': [2], 'c': [3], 'd': [1], 'e': [2]}
df = pd.DataFrame(d)
行和列
使用repeat:
df.loc[df.index.repeat(4), df.columns.repeat(2)].reset_index(drop=True)
輸出:
a a b b c c d d e e
0 1 1 2 2 3 3 1 1 2 2
1 1 1 2 2 3 3 1 1 2 2
2 1 1 2 2 3 3 1 1 2 2
3 1 1 2 2 3 3 1 1 2 2
用于numpy.tile不同的訂單:
import numpy as np
df.loc[df.index.repeat(4), np.tile(df.columns, 2)].reset_index(drop=True)
輸出:
a b c d e a b c d e
0 1 2 3 1 2 1 2 3 1 2
1 1 2 3 1 2 1 2 3 1 2
2 1 2 3 1 2 1 2 3 1 2
3 1 2 3 1 2 1 2 3 1 2
uj5u.com熱心網友回復:
利用pandas.concat
n = 4
res = pd.concat([df]*n, ignore_index=True)
例子:
>>> df = pd.DataFrame([[1, 2, 3, 1, 2]], columns=list('abcde'))
>>> df
a b c d e
0 1 2 3 1 2
>>> pd.concat([df]*4, ignore_index=True)
a b c d e
0 1 2 3 1 2
1 1 2 3 1 2
2 1 2 3 1 2
3 1 2 3 1 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496111.html
