我有一个看起来像这样的谷歌电子表格:
进一步通过DataFrame库,Pandas我从该表中获取数据以进行进一步分析。有一定的Архив,有一堆Номер - Цвет。任务是计算列中每种颜色的数量D,但条件是列中的数字C可以在列中重复A,在这种情况下,数字Красного必须与 相加Разноцветным。只有具有Красный与之关联的颜色的数字才能被复制。(如果此值重复,则考虑此颜色不是红色,而是多色,并相应地对此类双打的数量求和,而不是红色,而是多色)。
关于代码。这是我能想到的。它似乎完全完成了任务,但它看起来相当脏且可读性差。你能建议如何梳理它并可能摆脱嵌套条件吗?
import pandas as pd
from sheets import *
# Столбец A (архив)
archive = pd.DataFrame(test_sheet.get_values('A2:A21'), columns=['Номер'])
# Столбцы C,D (номер, цвет)
column = pd.DataFrame(test_sheet.get_values('C2:D21'), columns=['Номер', 'Цвет'])
color = {
'Красный': 'Красный|красный',
'Белый': 'Белый|белый',
'Синий': 'Синий|синий',
'Зеленый': 'Зеленый|зеленый',
'Разноцветный': 'Разноцветный|разноцветный',
'Оранжевый': 'Оранжевый|оранжевый'
}
to_archive = 0 # Перенос в архив через данную переменную
for key in color.keys():
col_ = column[column['Цвет'].str.contains(color[key])]
if key == 'Красный' and len(col_) > 0:
double = pd.merge(archive, col_, how='inner')
if len(double) > 0:
to_archive = len(double)
print(f'{key}: {len(col_) - to_archive}')
else:
print(f'{key}: {len(col_) - len(double)}')
elif key == 'Разноцветный':
print(f'{key}: {len(col_) + to_archive}')
else:
print(f'{key}: {len(col_)}')
print('******************')
结论:
Красный: 3
Белый: 2
Синий: 3
Зеленый: 3
Разноцветный: 5
Оранжевый: 4
******************
我添加一个链接到源文件

您根本没有使用 pandas 工具包。您的任务在一行半内解决:
获取资源: