Python 如何创建一个字典,将多列w.r.t的值存储到一列,并将其重建回原始数据帧?

Python 如何创建一个字典,将多列w.r.t的值存储到一列,并将其重建回原始数据帧?,python,python-3.x,pandas,dictionary,Python,Python 3.x,Pandas,Dictionary,你好,我有一个数据框 --------------------- ID | PARTY | KId --------------------- 1 | IND | 12 2 | IND | 13 3 | CUST | 14 4 | IND | 17 --------------------- 我想在python中创建一个dict,它将列'Party'和'KId'的值存储在Id中 所以我的字典应该是这样的: dict = { 1 : 'IND_12', 2 : 'IND_1

你好,我有一个数据框

---------------------
ID | PARTY | KId
---------------------
1  | IND   | 12
2  | IND   | 13
3  | CUST  | 14
4  | IND   | 17
---------------------
我想在python中创建一个dict,它将列'Party'和'KId'的值存储在Id中

所以我的字典应该是这样的:

dict = {
1 : 'IND_12',
2 : 'IND_13'
.
.

}
我尝试的是:

dict = {}
df = df.reset_index(drop=True)
for idx in df_.index:
    temp = df[df.index==idx]
    dict[temp['ID'].iloc[0]] = f"{temp['PARTY'].iloc[0]}_{temp['KId'].iloc[0]}"

生成此词典后,哪种可能是从dict重建原始df的最佳解决方案?

不要使用
dict
作为变量,因为python代码是单词

如果
ID
为列,则解决方案为:

您可以将这两列合并并将其转换为dict:

df['PARTY'] = df['PARTY'] + '_' + df['KId'].astype(str)

d = df.set_index('ID')['PARTY'].to_dict()
或:

如果
ID
为索引使用,则解决方案为:


对于转换回使用:

d = {1: 'IND_12', 2: 'IND_13', 3: 'CUST_14', 4: 'IND_17'}
    
df = pd.DataFrame.from_dict(d, orient='index', columns=['PARTY'])

df[['PARTY','KId']] = df['PARTY'].str.split('_', expand=True)
df['KId'] = df['KId'].astype(int)
df = df.rename_axis('ID')
print (df)
   PARTY  KId
ID           
1    IND   12
2    IND   13
3   CUST   14
4    IND   17

不要对变量使用
dict
,因为python代码是一个单词

如果
ID
为列,则解决方案为:

您可以将这两列合并并将其转换为dict:

df['PARTY'] = df['PARTY'] + '_' + df['KId'].astype(str)

d = df.set_index('ID')['PARTY'].to_dict()
或:

如果
ID
为索引使用,则解决方案为:


对于转换回使用:

d = {1: 'IND_12', 2: 'IND_13', 3: 'CUST_14', 4: 'IND_17'}
    
df = pd.DataFrame.from_dict(d, orient='index', columns=['PARTY'])

df[['PARTY','KId']] = df['PARTY'].str.split('_', expand=True)
df['KId'] = df['KId'].astype(int)
df = df.rename_axis('ID')
print (df)
   PARTY  KId
ID           
1    IND   12
2    IND   13
3   CUST   14
4    IND   17
只需使用
astype()
方法和
to_dict()
方法:-

mydict=(df['PARTY']+'_'+df['KId'].astype(str)).to_dict()
要使其返回数据帧,请使用以下命令:-

df=pd.DataFrame(mydict.values(),index=mydict.keys())
df=df[0].str.split('_',expand=True).rename(columns={0:'PARTY',1:'KId'})
df['KId']=df['KId'].astype(int)
df.index.name='ID'
只需使用
astype()
方法和
to_dict()
方法:-

mydict=(df['PARTY']+'_'+df['KId'].astype(str)).to_dict()
要使其返回数据帧,请使用以下命令:-

df=pd.DataFrame(mydict.values(),index=mydict.keys())
df=df[0].str.split('_',expand=True).rename(columns={0:'PARTY',1:'KId'})
df['KId']=df['KId'].astype(int)
df.index.name='ID'

如何从dict'd'重新生成数据帧?@MurtazaBasu-Use
df=pd.dataframe.from_dict(d,orient='index')
如何从dict'd'重新生成数据帧?@MurtazaBasu-Use
df=pd.dataframe.from_dict(d,orient='index'))
如何从dict重新生成数据框?编辑我的答案…请看一看如何从dict重新生成数据框?编辑我的答案…请看一看