我正在尝试删除数据框中的重复值和空白,然后对所有值重新排序,以便在一行中,所有列值都以相同的数字结尾:
这是我当前的数据框:
const arr = [
["Calendar Name", "Standard"],
["Valid From", 44197],
["Valid To", 44561],
["Use Holidays", "yes"],
[
"Working Day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
],
[
"Start",
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
"-",
"-",
],
[
"End",
0.8333333333333334,
0.8333333333333334,
0.8333333333333334,
0.8333333333333334,
0.8333333333333334,
"-",
"-",
],
];
const [[first, second]] = arr;
console.log(first, second);
这就是我想要的输出:
brand code des price year
0 brand1 code1 des1 price1 year1
1 brand2 code2 price2
2 brand3 code3 des3 price3 year3
3 brand4 code4 price4
4 brand5 code5 des5 price5 year5
5 brand6 code6 price6
6 code2 des2 year2
7 code4 des4 year4
8 code6 des6 year6
这是我写的代码,如果有人能指导我怎么做,那将不胜感激:
brand code des price year
0 brand1 code1 des1 price1 year1
1 brand2 code2 des2 price2 year2
2 brand3 code3 des3 price3 year3
3 brand4 code4 des4 price4 year4
4 brand5 code5 des5 price5 year5
5 brand6 code6 des6 price6 year6
答案 0 :(得分:3)
您可以在每列上使用 df.apply()
,然后对于每个列系列,使用 np.unique()
获取已排序的唯一项列表(跳过空字符串),然后使用 pd.Series
重新创建列。
import numpy as np
df.apply(lambda x: pd.Series(np.unique(x[x!=''])))
输出:
code des price year brand
0 code1 des1 price1 year1 brand1
1 code2 des2 price2 year2 brand2
2 code3 des3 price3 year3 brand3
3 code4 des4 price4 year4 brand4
4 code5 des5 price5 year5 brand5
5 code6 des6 price6 year6 brand6
答案 1 :(得分:0)
这是您要找的吗?首先用 np.nan
填充空白区域,然后使用 apply
df = df.replace(r'^\s*$', np.nan, regex=True)
df.apply(lambda x: pd.Series(x.dropna().values))
code des price year brand
0 code1 des1 price1 year1 brand1
1 code2 des3 price2 year3 brand2
2 code3 des5 price3 year5 brand3
3 code4 des2 price4 year2 brand4
4 code5 des4 price5 year4 brand5
5 code6 des6 price6 year6 brand6
6 code2 NaN NaN NaN NaN
7 code4 NaN NaN NaN NaN
8 code6 NaN NaN NaN NaN