Как добавить разрыв строки в строке внутри DataFrame? - PullRequest
0 голосов
/ 25 сентября 2019

Я пробую этот текстовый спиннер, но меня беспокоит, когда я пытаюсь добавить разрыв строки в создаваемой строке.Как видно из приведенного ниже кода, я добавляю "\n", но вывод, сгенерированный печатью (а также содержимым DataFrame), не содержит этот разрыв.

import spintax

df = pd.DataFrame()

for i in range(0, 50):
    data = spintax.spin("{option1|option2}" +  "\n" + " blablabla ")
    df = df.append({'A': data}, ignore_index=True)

df['A'] = df['A'].str.replace(r'\s+', " ")
print(df)

Как я могу это сделатьработа?

print(df) вывод выглядит так:

                         A
0   option2 blablabla 
1   option2 blablabla 
2   option2 blablabla 
3   option2 blablabla 
4   option2 blablabla 

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Таким образом, проблема заключается в том, что вы заменяете r \ s +, который также соответствует разрывам строк и заменяет их пробелами. source .

Если вы прокомментируете свою строку, после нее символ новой строки будет сохранен в строках.

  import spintax
    df = pd.DataFrame()
    for i in range(0, 50):
        data = spintax.spin("{option1|option2}" +  "\n" + " blablabla ")
        df = df.append({'A': data}, ignore_index=True)

    # df['A'] = df['A'].str.replace(r'\s+', " ")

    print(df)

Это то, чего вы хотели достичь?

1 голос
/ 25 сентября 2019

Это невозможно, потому что вы получите лишнюю строку в вашем фрейме данных без значения индекса.Определение фрейма данных не поддерживает то, что, по моему мнению, вы пытаетесь достичь Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns).

Который, на мой взгляд, выглядит следующим образом:

                         A
0   option2
    blablabla
1   option2
    blablabla
2   option2 
    blablabla 
3   option2 
    blablabla 
4   option2 
    blablabla 

Как решение, которое вы можете попробовать разделить на:два столбца и добавьте дополнительный столбец, который будет указывать, где должен появиться разрыв строки, поэтому при объединении полной строки вы получите строку того, что вы хотите:

import spintax
import pandas as pd
df = pd.DataFrame()
for i in range(0, 50):
    data = spintax.spin("{option1|option2}" + "\n" +" blablabla ")
    df = df.append({'A': data}, ignore_index=True)
df['A'] = df['A'].str.replace(r'\s+', " ")
print(df)
df['split'] = df['A'].str.split(' ')
df['first'] = df['split'].str.get(0)
df['flag_break'] = '\n'
df['second'] = df['split'].str.get(1)
df['full_string'] = df['first'] + " " +df['flag_break']+df['second']
df = df.drop('split',axis=1)

print(df.head())
print(df['full_string'].max())

Вывод вашего фрейма данных:

                     A    first flag_break     second          full_string
0   option2 blablabla   option2         \n  blablabla  option2 \nblablabla
1   option1 blablabla   option1         \n  blablabla  option1 \nblablabla
2   option2 blablabla   option2         \n  blablabla  option2 \nblablabla
3   option1 blablabla   option1         \n  blablabla  option1 \nblablabla
4   option2 blablabla   option2         \n  blablabla  option2 \nblablabla

Вывод вашей полной строки, так что вы получите разрыв строки print(df['full_string'].max()):

option2
blablabla
...