如何在熊猫中传递和编辑数据框作为参数

时间:2018-08-31 14:23:32

标签: python pandas

我正在尝试在数据框架列中拆分数组,并将各个条目附加到新的数据框架中。

我设法编写了一个似乎可以遍历各个条目的函数。但是,当我尝试将它们附加到另一个数据框时,该数据框保持空白。

我什至可以从函数中编辑数据框吗?

import pandas as pd

# Original data frame
series1 = pd.Series([['cat', 'dog', 'rabbit'], ['frog', 'moose', 'fly']])
oldDF = pd.DataFrame(series1)

# New data frame where I want to populate all values in the old
series2 = pd.Series([])
newDF = pd.DataFrame(series2)

# Define function to iterate over each array 
def appendItems(x, df):
  for item in x:
    for i in item: 
      # Trying to append entries to new dataframe
      df.append(pd.Series([i]), ignore_index=True)
      print(pd.Series([i]))

# Apply above function to dataframe
oldDF.apply(appendItems,args=[newDF])

# Result-> empty data frame :-(
print("Checking result")
newDF.head()

2 个答案:

答案 0 :(得分:1)

您可以尝试使用 numpy.concatenate

import numpy as np

pd.DataFrame(np.concatenate(oldDF[0]))

[输出]

        0
0     cat
1     dog
2  rabbit
3    frog
4   moose
5     fly    

答案 1 :(得分:1)

appendItems函数面临的问题是它使用df.append()来创建副本并且没有就位修改。 df.append()在内部使用pd.concat()。 如果您确实要使用appendItems函数,则应使用df.loc[]直接修改df而不是副本。 这是一个示例:

def appendItems(x, df):
    for i, item in enumerate(pd.np.hstack(x.values.tolist())):
        df.loc[i, 0] = item

({np.hstack仅用于展平嵌套的值列表)

链接: pd.DataFrame.append

pd.concat

np.hstack