我正在尝试在数据框架列中拆分数组,并将各个条目附加到新的数据框架中。
我设法编写了一个似乎可以遍历各个条目的函数。但是,当我尝试将它们附加到另一个数据框时,该数据框保持空白。
我什至可以从函数中编辑数据框吗?
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()
答案 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
仅用于展平嵌套的值列表)