Pythonic способ преобразования данных Pandas - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть набор данных, как;

x1      NAN         
x2      NAN         
x3      NAN     
NAN     y1  
NAN     y2  

Есть ли способ изменить форму кадра панд ниже;Я думаю, это будет похоже на внешнее объединение sql, поэтому я могу умножать значения.

x1  y1      
x1  y2      
x2  y1      
x2  y2          
x3  y1      
x3  y2      

EDIT: Reason;Мне нужно преобразовать файл Excel (который я не могу контролировать) в этот формат, чтобы передать другую программу (которую я не могу контролировать)

    xl = pd.ExcelFile(
    '/inputfile.xlsx')
ncols = xl.book.sheet_by_index(0).ncols
df = xl.parse(0, converters={i: str for i in range(ncols)})

## Maybe this kind of Logic 
## But could it be Pythonic
# for index in range(len(df)):
#     if not pd.isnull(df.iloc[index][3]):
#         print(df.iloc[index][3])


writer = pd.ExcelWriter(
    'output.xlsx')  # engine='xlsxwriter'
df.to_excel(writer, 'Sheet1', index=False)
writer.save()

1 Ответ

0 голосов
/ 20 декабря 2018

вы можете начать со следующего быстрого взлома

df1 = pd.DataFrame(data=df.values.reshape(-1))

for i in df1[0].str.replace('\d+','').unique():
    df1[i] = df1[0]
df1 = df1[df1[0].str.replace('\d+','').dropna().unique()]
for xx in df1.columns:
    df1[xx] = df1[xx].apply(lambda x:x if type(x)==str and x.startswith(df1[xx].name) else np.nan )

df1



        x   c   y   title
     0  x1  NaN NaN NaN
     1  NaN c1  NaN NaN
     2  x2  NaN NaN NaN
     3  NaN c2  y1  NaN
     4  x3  NaN y3  title1
     5  NaN c3  NaN title2
     6  NaN NaN NaN NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...