在 for 循环中创建新的 df 列
Create new df coulmns in for loop
我有一个包含 'x' 列的 df,我想从中采样数据并将其存储在新数据帧 df_pull 中。我想在 for 循环中重复这个过程,例如10倍。我的问题是:“名称 'df_pull' 未定义”。当然,这是因为我没有 defiend df_pull,但是我如何创建一个空的 df。这不可能吧?通过创建很多 if 列表,我很成功,但我确信这不是最好的解决方案。
for i in np.arange(10):
df_pull[[i]] = df['x'].sample(frac=1)
谢谢。
与concat
一起使用列表comrehension并且DataFrame.reset_index
与drop=True
也很重要,以避免相同的列值(因为索引alignmenet):
r = np.arange(10)
L = [df['x'].sample(frac=1).reset_index(drop=True) for i in r]
df_pull = pd.concat(L, axis=1, keys=r)
你的解决方案有空 DataFrame 和 DataFrame.reset_index
:
df = pd.DataFrame({
'y':[7,8,9,4,2,3],
'x':[1,3,5,7,1,0],
})
df_pull = pd.DataFrame()
for i in np.arange(10):
df_pull[i] = df['x'].sample(frac=1).reset_index(drop=True)
print (df_pull)
0 1 2 3 4 5 6 7 8 9
0 1 7 1 1 1 5 3 5 3 1
1 7 1 5 5 0 1 1 1 7 7
2 5 0 0 7 1 3 5 3 1 5
3 3 3 3 0 3 0 7 1 1 3
4 0 1 7 1 5 7 1 7 5 1
5 1 5 1 3 7 1 0 0 0 0
您可以创建一个空的DataFrame
只是
pull_df = pd.DataFrame()
如果您想要与第一个 df 相同的列
pull_df = pd.DataFrame(columns=df.columns)
我有一个包含 'x' 列的 df,我想从中采样数据并将其存储在新数据帧 df_pull 中。我想在 for 循环中重复这个过程,例如10倍。我的问题是:“名称 'df_pull' 未定义”。当然,这是因为我没有 defiend df_pull,但是我如何创建一个空的 df。这不可能吧?通过创建很多 if 列表,我很成功,但我确信这不是最好的解决方案。
for i in np.arange(10):
df_pull[[i]] = df['x'].sample(frac=1)
谢谢。
与concat
一起使用列表comrehension并且DataFrame.reset_index
与drop=True
也很重要,以避免相同的列值(因为索引alignmenet):
r = np.arange(10)
L = [df['x'].sample(frac=1).reset_index(drop=True) for i in r]
df_pull = pd.concat(L, axis=1, keys=r)
你的解决方案有空 DataFrame 和 DataFrame.reset_index
:
df = pd.DataFrame({
'y':[7,8,9,4,2,3],
'x':[1,3,5,7,1,0],
})
df_pull = pd.DataFrame()
for i in np.arange(10):
df_pull[i] = df['x'].sample(frac=1).reset_index(drop=True)
print (df_pull)
0 1 2 3 4 5 6 7 8 9
0 1 7 1 1 1 5 3 5 3 1
1 7 1 5 5 0 1 1 1 7 7
2 5 0 0 7 1 3 5 3 1 5
3 3 3 3 0 3 0 7 1 1 3
4 0 1 7 1 5 7 1 7 5 1
5 1 5 1 3 7 1 0 0 0 0
您可以创建一个空的DataFrame 只是
pull_df = pd.DataFrame()
如果您想要与第一个 df 相同的列
pull_df = pd.DataFrame(columns=df.columns)