从pandas DataFrame获取一行并将其添加到新的DataFrame

e1xvtsh3  于 2023-04-10  发布在  其他
关注(0)|答案(2)|浏览(202)

所以,我有一个14列的DataFrame(带标题)。我想在一个索引处获取这个DataFrame的一行的值,该索引是一个介于0和DataFrame最大长度之间的随机整数,提取这些值,然后将它们添加到一个具有相同标题的新DataFrame。
数据框看起来像这样:


我尝试过使用.iloc的各种组合,但由于某种原因,产生的DataFrame只不过是列标题,而不是DataFrame本身的实际数值。
最好的办法是什么?
谢谢

jbose2ul

jbose2ul1#

假设你有一个类似这样的dummy dataframe:

df = pd.DataFrame({'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
                   'B': ['one', 'one', 'two', 'two', 'one', 'one'],
                   'C': [1, 2, 3, 4, 5, 6],
                   'D': [7, 8, 9, 10, 11, 12]})

让我们创建一个emplty df:

df2 = pd.DataFrame(columns=df.columns)

如果你想从df到df2取一行,那么就这样做:

df2 = df2.append(df.iloc[1], ignore_index=True)
# if append is deprecated you can do this:
df2 = pd.concat([df2, df.iloc[[1]]], axis=0, ignore_index=True)

如果你想要一个随机的,你可以这样做:

df2 = df2.append(df.sample(1), ignore_index=True)
#or
df2 = pd.concat([df2, df.sample(1)], ignore_index=True)
waxmsbnn

waxmsbnn2#

假设你的dataframe被命名为df,你应该能够使用iloc查询一个特定的行,* 例如 *:

df.iloc[[i]]

其中i是你的随机数。
然后,您可以将此数据框与新的数据框df_new连接起来。

for i in np.random.randint(0,10,size=10):
    if df_new.empty:
        df_new = df.iloc[[i]]
    else:
        df_new = pd.concat([df_new, df.iloc[[i]]])

相关问题