如何将选定的行移动到熊猫中的下一个相邻列?

时间:2019-05-15 13:23:55

标签: python pandas

df3=pd.read_excel(r'may_2019.xlsx',sheet_name='Sheet2')

以下是我的熊猫数据框示例:

+--------------------------+
|           Col1           |
+--------------------------+
| G | 20 mins | 2015       |
| NR | 2                   |
| G  | 11 mins | 302       |
| TV-MA | 44 mins | Apr 30 |
| G | 198                  |
| TV-MA | Apr 30           |
| NR | 2012                |
| NR | 57 mins             |
+--------------------------+
  

数据中有一些异常(即:2,198,302)

给定样本所需的输出:

+--------+----------+------+-------+-----+
| Rating | Duration | Year | Month | Day |
+--------+----------+------+-------+-----+
| G      |       20 | 2015 |       |     |
| NR     |          |    2 |       |     |
| G      |       11 |  302 |       |     |
| TV-MA  |       44 |      | Apr   |  30 |
| G      |          |  198 |       |     |
| TV-MA  |          |      | Jan   |  20 |
| NR     |          | 2012 |       |     |
| NR     |       57 |      |       |     |
+--------+----------+------+-------+-----+

我尝试过的事情

df5=pd.DataFrame(df3.Col1.str.split("|").tolist(),columns=['r','d','y'])
indx=df5.loc[df5.d.str.contains('\d{4}')].index
df6.loc[indx,['d','y']]=df5.loc[indx,['d','y']].shift(1,axis=1)

然后我无法根据所需表格更改日期 所以我试图创建函数,但这也没有用。

def split_data(input):
    newd=input.split("|")
    if len(newd)==3:
        df['date']=newd[2]
        df['du']=newd[1]
        df['rating']=newd[0]
    if len(newd)==2:
        df['rating']=newd[0]
        if re.findall('\d{4}',newd[1]):
            df['date']=newd[1]
        else:
            df['du']=newd[1]
    return df

我尝试过的方法无法为所有情况提供完整的解决方案。
 那么,有谁知道如何使用熊猫呢?

1 个答案:

答案 0 :(得分:0)

查看您的输入,我首先会尝试正确读取数据-看来您无法定义excel文件的分隔符等