【问题标题】:reading each line of text to separate pandas columns读取每一行文本以分隔熊猫列
【发布时间】:2022-01-11 14:23:16
【问题描述】:

我有一个文本数据集 (.txt),格式为 row_index a_dic id 文本。这是一个例子

0     {'1': 0.27, '2': 0.68, '0': 0.5} 6081bdea52c838000aaa53d3 "some text" 

我需要用分隔符将其分开,以便我可以读入 pandas 数据框。 例如

0     {'1': 0.27, '2': 0.68, '0': 0.5}, 6081bdea52c838000aaa53d3, "some text" 

我试过了

for idx, row in data.iterrows():
    row.str.split(pat=r"\"\}", expand=True)
data

但这似乎没有任何作用。

【问题讨论】:

  • 介意我问一下您期望该代码会做什么?
  • 将文本分成3列
  • 您在"} 上拆分的正则表达式模式不会出现在您的输入中。这就是为什么你没有得到分裂。

标签: python pandas dataframe


【解决方案1】:

因此,使用以下数据框:

import pandas as pd

df = pd.DataFrame(
    {
        0: [
            "0     {'1': 0.27, '2': 0.68, '0': 0.5} 6081bdea52c838000aaa53d3 some text",
            "1     {'1': 0.32, '2': 0.72, '0': 0.9} 6981bfga52c549000aaa12z9 other text",
        ],
    }
)
print(df)
# Output
                                                                            0
0   0     {'1': 0.27, '2': 0.68, '0': 0.5} 6081bdea52c838000aaa53d3 some text
1  1     {'1': 0.32, '2': 0.72, '0': 0.9} 6981bfga52c549000aaa12z9 other text

你可以这样做:

df = (
    df[0]
    .str.split(pat=r"(.*)({.*}) (\S*) (.*)", expand=True)
    .drop(columns=[0, 1, 5])
    .T.reset_index(drop=True)
    .T
)

print(df)
# Output
                                  0                         1           2
0  {'1': 0.27, '2': 0.68, '0': 0.5}  6081bdea52c838000aaa53d3   some text
1  {'1': 0.32, '2': 0.72, '0': 0.9}  6981bfga52c549000aaa12z9  other text

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多