假设这个数据框架有四列:“名称”、“值”、“Ccy”和“组”:
import pandas as pd
Name = ['ID', 'Country', 'IBAN','Dan_Age', 'Dan_city', 'Dan_country', 'Dan_sex', 'Dan_Age', 'Dan_country','Dan_sex' , 'Dan_city','Dan_country' ]
Value = ['TAMARA_CO', 'GERMANY','FR56','18', 'Berlin', 'GER', 'M', '22', 'FRA', 'M', 'Madrid', 'ESP']
Ccy = ['','','','EUR','EUR','USD','USD','','CHF', '','DKN','']
Group = ['0','0','0','1','1','1','1','2','2','2','3','3']
df = pd.DataFrame({'Name':Name, 'Value' : Value, 'Ccy' : Ccy,'Group':Group})
print(df)
Name Value Ccy Group
0 ID TAMARA_CO 0
1 Country GERMANY 0
2 IBAN FR56 0
3 Dan_Age 18 EUR 1
4 Dan_city Berlin EUR 1
5 Dan_country GER USD 1
6 Dan_sex M USD 1
7 Dan_Age 22 2
8 Dan_country FRA CHF 2
9 Dan_sex M 2
10 Dan_city Madrid DKN 3
11 Dan_country ESP 3
在将数据保存到csv之前,我希望以不同的方式表示该数据。我想将“Name”列中的重复项与“values”和“Ccy”中的associates值进行分组。我希望列“Value”和“Ccy”中的数据存储在列“Group”定义的行(索引)中。这样我就不会混淆数据
然后,如果名称在“组”0中,则表示它是常规数据,因此我希望此“名称”中的所有行都填充相同的值
所以我想得到这个结果:
ID_Value Country_Value IBAN_Value Dan_age Dan_age_Ccy Dan_city_Value Dan_city_Ccy Dan_sex_Value
1 TAMARA GER FR56 18 EUR Berlin EUR M
2 TAMARA GER FR56 22 M
3 TAMARA GER FR56 Madrid DKN
我找不到如何做第一部分。使用下面的代码,如果我删除空列,我就不会得到我想要的evn
g = df.groupby(['Name']).cumcount()
df = df.set_index([g,'Name']).unstack().sort_index(level=1, axis=1)
df.columns = df.columns.map(lambda x: f'{x[0]}_{x[1]}')
任何人都可以帮助我
多谢各位
您只需执行3个步骤即可轻松完成此操作:
上面给出的结果没有给出您想要的确切列顺序,因此您必须使用
您可以使用以下命令。有关每个步骤,请参见代码中的注释:
从那里,您可以删除不需要的列,将字符串从“TAMARA_CO”更改为“TAMARA”,“German”更改为“GER”,使用
reset_index(drop=True)
,等等相关问题 更多 >
编程相关推荐