在列熊猫 python 中附加循环输出

时间:2021-01-01 14:43:28

标签: python pandas dataframe

我正在使用下面的代码将输出附加到空数据帧

image_data = pd.DataFrame()

for i in words:
    y = re.findall('{} ([^ ]*)'.format(re.escape(i)), data)
    x = y
    image_data = image_data.append(x, ignore_index = True)

我得到如下输出,但我想要

        0
0   30708
1      15
2    1800
0   19200
1      50
2    1180

我想要的输出是什么

        0    1       2
0   30708   15    1800
1   19200   50    1180

如何在每次循环重复时将 3 行变为 3 列。

3 个答案:

答案 0 :(得分:1)

如果 x 是值列表,请使用:

image_data = image_data.append([x], ignore_index = True)

将所有值附加为新行,而不是将单个元素附加为行。 有关 append 方法的更多详细信息,请查看 here

答案 1 :(得分:1)

List of 3
 $ x:List of 2
  ..$ height: num 100
  ..$ weight: num 200
 $ y:List of 2
  ..$ height: num 300
  ..$ length: num 400
 $ z:List of 2
  ..$ weight: num 500
  ..$ price: num 600

您可以先转换为 numpy.ndarry 以执行 reshape():

# replicating your dataframe
data = [30708, 15, 1800, 19200, 50, 1180]
df = pd.DataFrame(data)

然后回到 pd.DataFrame 如果你真的需要它是一个熊猫数据框

vals = df[0].values.reshape(2, 3)

答案 2 :(得分:1)

当您编写 x = y 而不对 x 进行任何操作时,这让我感到困惑。似乎是一个多余的操作。您的代码的另一个问题是 image_data.append 很慢,因为它必须复制后备内存。循环中重复调用是性能瓶颈的保证。

试试这个:

# image_data starts as a list
image_data = []

for i in words:
    y = re.findall('{} ([^ ]*)'.format(re.escape(i)), data)
    image_data.append(y)

# And it ends as a DataFrame
image_data = pd.DataFrame(image_data)