import pandas as pd
# 创建原始的Series
data = pd.Series([
"('1500331108-10', '23103093-1, 23103093-2, 23103095-1, 23103095-2', '22000')",
"('1500304821-180', '23102612-1', '2000')"
])
# 定义一个函数,用于处理每行元素
def process_element(element):
# 剔除"("和")"和"'"
element = element.strip("()'")
# 根据"', '"进行分列
elements_list = element.split("', '")
# 输出单行Series
return pd.Series(elements_list, index=["订单号", "卷号", "重量"])
# 使用apply()函数应用处理函数到每行元素
processed_data = data.apply(process_element)
# 打印结果, 也是Series
processed_data
import pyperclip
# clipboard_data = pyperclip.paste() # cyclone-arr-return str(tuple) eval 不会将内部元素的引号也去除
tuple_data = list(eval(clipboard_data)) # 如果只有一行数据 tuple会降维, 需转为list
df = pd.DataFrame(tuple_data) # 内部元素依然有引号 只不过没display而已
columns = ["调拨计划", "重量误差", "箱号"]
df.columns = columns
# df["调拨计划"].astype(str).str.split("'", expand=True)
# 剔除Series中每个元素的"(", ")"符号 然后根据"'"符号进行分列, 新的列名为["订单号", "卷号", "重量"]
# 方法1 "','" 或"', '"
pd.Series([
"('1500331108-10', '23103093-1, 23103093-2, 23103095-1, 23103095-2', '22000')",
"('1500304821-180', '23102612-1', '2000')"
]).str.strip("()' ").str.replace(" ", "").str.split("','", expand=True)
pd.Series([
"('1500331108-10', '23103093-1, 23103093-2, 23103095-1, 23103095-2', '22000')",
"('1500304821-180', '23102612-1', '2000')"
]).str.strip("()' ").str.split("', '", expand=True)
# 方法2 "'" 然后剔除元素全为","的列
df_test = pd.Series([
"('1500331108-10', '23103093-1, 23103093-2, 23103095-1, 23103095-2', '22000')",
"('1500304821-180', '23102612-1', '2000')"
]).str.strip("()' ").str.replace(" ", "").str.split("'", expand=True)
df_test.loc[:, ~df_test.apply(lambda x: (x == ',').all(), axis=0)]
df_test.loc[:, ~df_test.apply(lambda x: all(val == ',' for val in x))]
# 方法3 正则表达式剔除"() " re.sub(r'[()\s]', '', original_string)
# 方法4 见
# 从txt里断行
import pandas as pd
# df = pd.read_clipboard()
# list_columns = df.columns.tolist()
# ser = pd.Series(list_columns)
# list_split = ser.astype(str).str.split(',').tolist()
# pd.DataFrame(list_split)
# ser.astype(str).str.split(',', expand=True)
# pd.DataFrame(
# i.split(',') for i in list_columns
# )
def fun_CanbeList(x):
try:
eval(i)
return True
except:
return False
# list(
# eval(k) for i in list_columns for j in i for k in j if fun_CanbeList(k)
# )
# pd.Series(list_columns).to_excel(r"d:\test\test.xlsx", index=False)
# list_columns