Hopfly, кто-нибудь, помогите мне:) ....
Из моего предыдущего вопроса Как изменить значения столбцов в пандах.1005 * Я пытался с regex
и replace
ext_sites.replace(to_replace= ext_sites['Pending ']._where(values), value='aaaaaaaaaaaaaaaaaaaaaaa', regex=False)
, затем я получил эту ошибку
Traceback (most recent call last):
File "C:/Users/DELL/PycharmProjects/Gov-Trac-Tool/updateMyDF.py", line 39, in <module>
ext_sites.replace(to_replace= ext_sites['Pending ']._where(values), value='aaaaaaaaaaaaaaaaaaaaaaa', regex=False)
File "C:\Users\DELL\PycharmProjects\MyALLRefProf\venv\lib\site-packages\pandas\core\generic.py", line 8572, in _where
raise ValueError('Array conditional must be same shape as '
ValueError: Array conditional must be same shape as self
Для обновленного примера
Перед обновлениемdataframe
|-------------------------------------------------------|
|SiteCode | Pending | Pending Status | Example |
|-------------------------------------------------------|
|LCAIE10002 | TE | tttt | cccc |
|LCAIN30531 | Opt. | tttt | cccc |
|LCAIW10207 | pp | tttt | cccc |
|LCAIE30089 | Opt. | tttt | cccc |
|LSINI16321 | TE | tttt | cccc |
|LCAIE30216 | TE | tttt | cccc |
|LCAIW20282 | PP | tttt | cccc |
|-------------------------------------------------------|
Так что теперь мне нужно изменить значения двух столбцов Pending
со значением aaaa
и Pending Status
со значениями bbbb
с разными значениями, поэтому
Ожидаемый результат
|-------------------------------------------------------|
|SiteCode | Pending | Pending Status | Example |
|-------------------------------------------------------|
|LCAIE10002 | TE | tttt | cccc |
|LCAIN30531 | Opt. | tttt | cccc |
|LCAIW10207 | pp | tttt | cccc |
|LCAIE30089 | aaaa | bbbb | cccc |
|LSINI16321 | aaaa | bbbb | cccc |
|LCAIE30216 | TE | tttt | cccc |
|LCAIW20282 | PP | tttt | cccc |
|-------------------------------------------------------|
Так что если кто-то заинтересован в этом случае, я должен взаимодействовать с plot
dash
framework
, как мои предыдущие вопросы
Как заполнитьРаскрывающийся список с использованием Dash, pandas, mysql и python
Как использовать @ app.callback для возврата DropDown, который должен быть включен
Просто хочу сделатьинструмент, который создает файл Data Visualization
для excel
, используя этот simple
frameworkout
, поскольку он только что выпущен, так как я считаю единственным источникомявляется официальным веб-сайтом
https://dash.plot.ly/, поскольку он поддерживает pandas
dataframe
, поскольку я могу экспортировать из Dash DataTable
Я создал обновленные данные в фрейме данных
Я надеюсь, что это будет достаточно ясно
Во-вторых, есть ли способ divide
этот процесс в некоторых modules
oop
, или это не обязательно делать?
Iнадеюсь увидеть некоторые новые идеи, с небольшой помощью:)
Отредактировано
Вот мой dash
plot
графический интерфейс выглядит как
import dash
import dash_table
import pandas as pd
from myPandas import ext_sites, myOutlook_inBox
from updateMyDF import ext_sites, myOutlook_inBox
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output
from dash.dependencies import Input, Output, State
import base64
import datetime
import io
app = dash.Dash(__name__)
app.layout = app.layout = html.Div([
dash_table.DataTable(
id='table',
columns=[{"name": i, "id": i} for i in ext_sites.columns],
data=ext_sites.to_dict("rows"),
style_table={
'height': '300px',
'overflowY': 'scroll',
'border': 'thin lightgrey solid'
},
page_action='native',
page_current=0,
page_size=10,
style_header={'backgroundColor': 'rgb(255, 255, 0)', 'fontWeight': 'bold'}
),
dcc.Upload(
id='upload-data',
children=html.Div([
'Drag and Drop or ',
html.A('Select Files')
]),
style={
'width': '100%',
'height': '60px',
'lineHeight': '60px',
'borderWidth': '1px',
'borderStyle': 'dashed',
'borderRadius': '5px',
'textAlign': 'center',
'margin': '10px'
},
# Allow multiple files to be uploaded
multiple=True
),
html.Div(id='output-data-upload'),
])
def parse_contents(contents, filename, date):
content_type, content_string = contents.split(',')
decoded = base64.b64decode(content_string)
try:
if 'csv' in filename:
# Assume that the user uploaded a CSV file
df = pd.read_csv(
io.StringIO(decoded.decode('utf-8')))
elif 'xls' in filename:
# Assume that the user uploaded an excel file
df = pd.read_excel(io.BytesIO(decoded))
except Exception as e:
print(e)
return html.Div([
'There was an error processing this file.'
])
return html.Div([
html.H5(filename),
html.H6(datetime.datetime.fromtimestamp(date)),
dash_table.DataTable(
data=df.to_dict('records'),
columns=[{'name': i, 'id': i} for i in df.columns]
),
html.Hr(), # horizontal line
# For debugging, display the raw contents provided by the web browser
html.Div('Raw Content'),
html.Pre(contents[0:200] + '...', style={
'whiteSpace': 'pre-wrap',
'wordBreak': 'break-all'
})
])
@app.callback(Output('output-data-upload', 'children'),
[Input('upload-data', 'contents')],
[State('upload-data', 'filename'),
State('upload-data', 'last_modified')])
def update_output(list_of_contents, list_of_names, list_of_dates):
if list_of_contents is not None:
children = [
parse_contents(c, n, d) for c, n, d in
zip(list_of_contents, list_of_names, list_of_dates)]
return children
if __name__ == '__main__':
app.run_server(debug=True)
Отредактировано
Я даже пытаюсь использовать это
mytuple = tuple(map(int, values.split(' ')))
ext_sites.set_value(mytuple, 'Pending ', 'aaaaaaaaaaaaaaaaaa')
, но я нахожу эту ошибку
File "C:/Users/DELL/PycharmProjects/Gov-Trac-Tool/updateMyDF.py", line 34, in <module>
mytuple = tuple(map(int, values.split(' ')))
AttributeError: 'tuple' object has no attribute 'split'