使用Pandas在Excel中的特定列操作

时间:2018-08-27 17:03:15

标签: python excel python-3.x pandas

我有一个具有多列的excel(test.xlsx)工作表,col1,col2,col3,col4等等。我想对col2,col3执行一些操作,然后输出output.xlsx所有列均与更新后的col2,col3 ..

我在尝试什么。

df = pd.read_xlsx('test.xlsx')
col = ['col2','col3']
df_with_some_operation = df[col].<some_op>
df_with_some_operation.to_excel(output.xlsx)

需要此代码的帮助,以便包括col2,col3在内的所有列都包含在最终的output.xlsx

为了更好地可视化...检查下面,我不想更改列名称,只想更新内容。.我选择了此示例以使其简化.. col2和col3->乘以2。只是一个注释,实际上有多个列,但是只有2个,我必须做一些工作。

input.xlsx
col1   col2 col3
 1      2    3

output.xls
col1  col2  col3
1     4    6

3 个答案:

答案 0 :(得分:1)

getRealpathFromUri(Uri uri)
{
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null);
if (cursor == null) 
{ // Source is Dropbox or other similar local file path
    result = contentURI.getPath();
}
else 
{ 
        if(cursor.moveToFirst()){
   int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
   //String yourRealPath = cursor.getString(columnIndex);
   path = cursor.getString(columnIndex);
         }
    cursor.close();
}
return path;
}

答案 1 :(得分:1)

只需在原始数据框中包含新生成的列即可。

df_with_some_operation = df[col].<and then the logic work>
newcolums=["coln1","coln2"]


df[newcolums]=df_with_some_operation

通过这种方式,您保存的数据框 df 将具有所有原始列以及所做的修改。

注意:您可以直接分配新列,而不必像上面那样单独写下来。这仅是为了了解:

newcolums=["coln1","coln2"]

df[newcolumns]=df[col].<and then the logic work>

答案 2 :(得分:1)

您可以将pd.DataFrame.applymap的结果分配给df[cols]。这将使其余数据框保持不变。

df = pd.read_excel('test.xlsx')

cols = ['col2','col3']
df[cols] = df[cols].applymap(lambda c: translate.translate_text(...))

df.to_excel('output.xlsx')

如果需要2个新列,则可以使用pd.DataFrame.join

df = df.join(df[cols].applymap(lambda c: translate.translate_text(...))\
                     .set_axis(['col2a', 'col3a'], 1))