【问题标题】:convert list of strings in a column into separated columns Python将列中的字符串列表转换为单独的列Python
【发布时间】:2021-10-07 12:21:17
【问题描述】:

我有一个名为 (events) 的列来自 csv 文件,我已将 csv 加载到数据框中。 此列包含每场足球比赛的事件: 这是一个例子: sample of data

我需要每个键都是一列,行将是它的值 变成这样:


event_team  event_time  event_type ....
home         34          Yellow card
away         14          Goal
....

这是一个示例文件 Sample from data 请问我该怎么做?

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

Pandas 支持直接从这样的字典列表中读取。

list1 = [dict1, dict2, dict3]
df = pd.DataFrame(list1)

使用它,您以后可以使用以下方法选择一列:

column = df["column_name"]

如果你想要一种非熊猫的方式,你可以这样做:

list1 = [dict1, dict2, dict3]

columns = {}

# Initializing the keywords
for d in list1:
    for k in d:
        if k not in columns:
            columns[k] = []

for d in list1:
    for k in columns:
        if k in d:
           columns[k].append(d[k])
        else:
           # because you want all columns to have the same length
           columns[k].append(None) 

print(columns)

编辑:此脚本使用 OP 描述的给定蓝图将“events_list”列解压缩到新数据帧。

import pandas as pd
import ast


df = pd.read_csv("Sampleofuefa.csv")



l = []
for d in df["events_list"]:
    # the values in the columns are strings, you have to interpret them
    # since ast.literal_eval returns a list of dicts, we extend the following
    # list with that list of dict: l = l1 + l2
   l.extend(ast.literal_eval(d))
   


event_df = pd.DataFrame(l)

【讨论】:

  • 这个字典列表是来自 csv 文件的数据帧 cam 的列中的值
  • 啊,我不明白。你有一个字典列表,对吗?然后你想把它改成数据框?
  • 我没有解释清楚是我的错,没错,我需要每个键都是一列,值是行。
  • 啊。因此,如果您希望这样,请使用第一个选项并将您的 dicts 列表转换为 pandas 数据框。
  • 我会用我的列替换这个值 [dict1, dict2, dict3] 吗?成为 list1 = df['events_list']
猜你喜欢
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 2020-05-12
相关资源
最近更新 更多