Python 3.x 如何将列的内容移动到其旁边的列
数据帧如下所示:Python 3.x 如何将列的内容移动到其旁边的列,python-3.x,pandas,Python 3.x,Pandas,数据帧如下所示: import pandas as pd df = pd.DataFrame ({ 'Name':['Brian','John','Adam'], 'HomeAddr':[12,32,44], 'Age':['M','M','F'], 'Genre': ['NaN','NaN','NaN'] }) 电流输出为: Name HomeAddr Age Genre 0 Brian 12 M NaN 1
import pandas as pd
df = pd.DataFrame ({
'Name':['Brian','John','Adam'],
'HomeAddr':[12,32,44],
'Age':['M','M','F'],
'Genre': ['NaN','NaN','NaN']
})
电流输出为:
Name HomeAddr Age Genre
0 Brian 12 M NaN
1 John 32 M NaN
2 Adam 44 F NaN
我想将HomeAddr和Age列的内容转换为+1列。下面是预期输出的示例
Name HomeAddr Age Genre
0 Brian NaN 12 M
1 John NaN 32 M
2 Adam NaN 44 F
我尝试了.shift(),但它不起作用
import pandas as pd
df = pd.DataFrame ({
'Name':['Brian','John','Adam'],
'HomeAddr':[12,32,44],
'Age':['M','M','F'],
'Genre': ['NaN','NaN','NaN']
})
df['HomeAddr'] = df['HomeAddr'].shift(-1)
print(df)
Name HomeAddr Age Genre
0 Brian 32.0 M NaN
1 John 44.0 M NaN
2 Adam NaN F NaN
有什么想法吗,伙计们?谢谢大家! 使用,但必须将列转换为字符串以避免丢失值,然后将数字列转换回:
df.loc[:, 'HomeAddr':] = df.loc[:, 'HomeAddr':].astype(str).shift(1, axis=1)
df['Age'] = pd.to_numeric(df['Age'])
print (df)
Name HomeAddr Age Genre
0 Brian NaN 12 M
1 John NaN 32 M
2 Adam NaN 44 F
另一个现成的解决方案:
df = df.drop('Genre', axis=1).rename(columns={'HomeAddr':'Age', 'Age':'Genre'})
df.insert(1, 'HomeAddr', np.nan)
print (df)
Name HomeAddr Age Genre
0 Brian NaN 12 M
1 John NaN 32 M
2 Adam NaN 44 F
祝贺你写了一个解释得很好的问题,包括示例数据帧!