我有一个具有多列的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
答案 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))