提问人:brins 提问时间:8/26/2023 更新时间:8/26/2023 访问量:40
如何访问列表中的元素并将它们存储为数据帧中的新列?
How to access elements inside a list and store them as new columns in the dataframe?
问:
我有以下数据帧
DF (英语)
关键字 |
---|
[(引起患者,0.4807),(WA non,0.1332),(2021,-0.0076)] |
[(不正确的重构,0.9084),(错误,0.5304),(不正确,0.2877)] |
列名是关键字,需要用“”拆分,并且必须生成新列,例如:keyword_1、keyword_2、keyword_3
所以我的 DF 应该看起来像
预期数据帧
keyword_1 | keyword_2 | keyword_3 |
---|---|---|
(引起患者,0.4807) | (西澳非,0.1332) | (2021, -0.0076) |
(不正确的重构,0.9084) | (错误,0.5304) | (不正确,0.2877) |
我尝试了以下方法:
new_col_list = ['first_keyword', 'second_keyword',
'third_keyword']
for n,col in enumerate(new_col_list):
df[col] = df['keywords'].apply(lambda keywords: keywords[n])
df = df('keywords',axis=1)
但它抛给我错误:IndexError:列出索引超出范围
如何实现预期的数据帧?
答:
0赞
Musabbir Arrafi
8/26/2023
#1
这是您的解决方案:
new_df = pd.DataFrame(columns=[f"keywords_{i+1}" for i in range(len(df["Keywords"].iloc[0]))])
for row_idx, col in enumerate(df['Keywords']):
new_df.loc[row_idx] = col
print(new_df)
输出:
keyword_1 keyword_2 keyword_3
0 (caused patient, 0.4807) (wa non, 0.1332) (2021, -0.0076)
1 (incorrect reconstitution, 0.9084) (error, 0.5304) (incorrect, 0.2877)
0赞
ragas
8/26/2023
#2
另一种选择:
df[['keyword1', 'keyword2', 'keyword3']] = pd.DataFrame(df['keywords'].tolist(), index=df.index)
print(df)
keyword1 keyword2 keyword3
0 (caused patient, 0.4807) (wa non, 0.1332) (2021, -0.0076)
1 (incorrect reconstitution, 0.9084) (error, 0.5304) (incorrect, 0.2877)
评论
0赞
Musabbir Arrafi
8/26/2023
这是一个硬编码的解决方案,考虑原始 DataFrame 的条目是否不同
0赞
ragas
8/26/2023
@MusabbirArrafi:然后添加新的列名。循环不是一个好的选择。如果您有 1M 行数据,则您的代码将运行很长时间。
评论