gpt4 book ai didi

python - 您如何使用 pd.read_clipboard 读取带有列表的数据框?

转载 作者:太空狗 更新时间:2023-10-29 19:31:05 24 4
gpt4 key购买 nike

这是来自另一个 question 的一些数据:

                          positive                 negative          neutral
1 [marvel, moral, bold, destiny] [] [view, should]
2 [beautiful] [complicated, need] []
3 [celebrate] [crippling, addiction] [big]

我首先要做的是在所有单词上添加引号,然后:

import ast

df = pd.read_clipboard(sep='\s{2,}')
df = df.applymap(ast.literal_eval)

有没有更聪明的方法来做到这一点?

最佳答案

字符串列表

对于基本结构,您可以使用 yaml无需添加引号:

import yaml
df = pd.read_clipboard(sep='\s{2,}').applymap(yaml.load)

type(df.iloc[0, 0])
Out: list

数值数据列表

在某些情况下,您可以将列表读取为字符串并使用 literal_eval(或 pd.eval,如果它们是简单列表)将它们转换。

例如,

           A   B
0 [1, 2, 3] 11
1 [4, 5, 6] 12

首先,确保列之间至少有两个空格,然后复制数据并运行以下命令:

import ast 

df = pd.read_clipboard(sep=r'\s{2,}', engine='python')
df['A'] = df['A'].map(ast.literal_eval)
df

A B
0 [1, 2, 3] 11
1 [4, 5, 6] 12

df.dtypes

A object
B int64
dtype: object

Notes

  • for multiple columns, use applymap in the conversion step:

    df[['A', 'B', ...]] = df[['A', 'B', ...]].applymap(ast.literal_eval)
  • if your columns can contain NaNs, define a function that can handle them appropriately:

    parser = lambda x: x if pd.isna(x) else ast.literal_eval(x)
    df[['A', 'B', ...]] = df[['A', 'B', ...]].applymap(parser)
  • if your columns contain lists of strings, you will need something like yaml.load (requires installation) to parse them instead if you don't want to manually addquotes to the data. See above.

关于python - 您如何使用 pd.read_clipboard 读取带有列表的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45827372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com