我一直试图将数据框内的列表分解为扩展/爆炸列,如堆栈溢出How to explode a list inside a Dataframe cell into separate rows
中所述我遇到了麻烦。
我从示例中获得了stackoverflow代码。但我无法让它用于我的个人数据文件(在我使用`pd.read_csv的csv文件中。
然后我简化了代码以摆脱一个不必要的列。我得到了简化的示例代码。然后我再次尝试加载我的.csv。再一次,它失败了。
因此,我通过将简化示例中的数据框写入新的csv文件,使用pd.read_csv`加载该文件,并重新运行简化的“爆炸”代码,将我的文件从等式中取出。我得到了同样的错误。代码和错误输出如下。
dplyr::spread
答案 0 :(得分:0)
当您保存到csv文件然后从csv文件中读取时,您的初始索引将重置为默认索引。要解决此问题,您需要在index_col
设置为opponent
的情况下阅读csv。
而不是:
#Load DF to CSV
df = pd.read_csv("Baskets.csv")
尝试使用:
#Load DF to CSV
df = pd.read_csv("Baskets.csv", index_col='opponent')
要将nearest_neighbors
列转换为列表,您还需要执行此操作:
from ast import literal_eval
df.nearest_neighbors=df.nearest_neighbors.apply(literal_eval)
在那之后,我能够融化工作:
(pd.melt(df.nearest_neighbors.apply(pd.Series).reset_index(),
id_vars=[ 'opponent'],
value_name='nearest_neighbors')
.set_index([ 'opponent'])
.drop('variable', axis=1)
.dropna()
.sort_index()
)
输出:
nearest_neighbors
opponent
76ers Zach LaVine
76ers Jeremy Lin
76ers Nate Robinson
76ers Isaia
blazers Zach LaVine
blazers Jeremy Lin
blazers Nate Robinson
blazers Isaia
bobcats Zach LaVine
bobcats Jeremy Lin
bobcats Nate Robinson
bobcats Isaia