我试图为年列中的每个月提供年值(例如,9月= 09-2011、12月= 12-2011、3月= 03-2012等)。我完全迷住了如何执行此操作因为我是刚接触熊猫的新手。是否有人对如何使用熊猫进行管理有任何指示?
答案 0 :(得分:1)
首先,当您提出问题时,请不要包含数据框的图像,而应包含可复制的数据。看一下this,以获取有关如何编写一个好问题的一些提示。
首先要问您表的源。例如在Excel中,您可以在那里解决问题吗?
如果您确实需要使用pandas
来解决问题,这是一种方法:
首先是一些样本数据,在同一列中混合了年和月。
import pandas as pd
import numpy as np
data = pd.DataFrame({
'key': ['2017', 'November', 'December', '2018', 'January']
})
第一步是将年份实例提取到新列中,然后“向前填充”以向前广播这些值。一行:
data['years'] = pd.Series([i if i.isnumeric() else np.nan for i in data['key']]).fillna(method = 'ffill')
现在,删除年份。在您的数据中,似乎没有相关数据。
data = data[~data['key'].str.isnumeric()]
给我们:
key years
1 November 2017
2 December 2017
4 January 2018
答案 1 :(得分:0)
df = pd.DataFrame({'col1': [np.nan,2,3,np.nan,5,6,7], 'col2': [np.nan,20,30,np.nan,50,60,70]}, index=[2011,'September', 'December', 2012, 'March','June','April'])
col1 col2
2011 NaN NaN
September 2.0 20.0
December 3.0 30.0
2012 NaN NaN
March 5.0 50.0
June 6.0 60.0
April 7.0 70.0
可以做
m = pd.Series([str(x) if type(x)==int else np.nan for x in df.index])
df.index = m.ffill().astype(str) + ' ' + df.index.astype(str)
df.loc[~df.isnull().all(1),:]
col1 col2
2011 September 2.0 20.0
2011 December 3.0 30.0
2012 March 5.0 50.0
2012 June 6.0 60.0
2012 April 7.0 70.0