python - 使用 pandas.to_csv(df) 仅在 Excel 中显示 numpy.array 的子集

标签 python arrays numpy pandas

我有一个pandas.DataFrame有 2 列。第一列是一个简单整数,第二列是 numpy.array长度为 50。我想将这两列写入 CSV 文件,但是当我使用 .to_csv() 时并在 Excel 中打开文件,仅显示并可访问一部分值。长度是可变的,当我在 Excel 中打开它时,我似乎得到了一列相同字符串长度(或多或少)的列。 pandas.to_csv() 是否将某种视觉解释写入文件,而不是 DataFrame 中的实际数据?

如何正确地将其写入 CSV 以便我可以在 Excel 中使用它?

最佳答案

似乎第二列的 50 个值位于 Excel 中每行的一个单元格中。

我认为您可以通过 apply 使用 numpy array 列创建新列系列 然后 concat第一列a。最后写to_csv :

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [0,1,5], 'b': [np.arange(50), np.arange(50), np.arange(50)]} )
print df
   a                                                  b
0  0  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
1  1  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
2  5  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...    

print df.b.apply(pd.Series)
   0   1   2   3   4   5   6   7   8   9  ...  40  41  42  43  44  45  46  47  \
0   0   1   2   3   4   5   6   7   8   9 ...  40  41  42  43  44  45  46  47   
1   0   1   2   3   4   5   6   7   8   9 ...  40  41  42  43  44  45  46  47   
2   0   1   2   3   4   5   6   7   8   9 ...  40  41  42  43  44  45  46  47   

   48  49  
0  48  49  
1  48  49  
2  48  49  

df = pd.concat([df['a'], df.b.apply(pd.Series)], axis=1)
print df
[3 rows x 50 columns]
   a  0  1  2  3  4  5  6  7  8 ...  40  41  42  43  44  45  46  47  48  49
0  0  0  1  2  3  4  5  6  7  8 ...  40  41  42  43  44  45  46  47  48  49
1  1  0  1  2  3  4  5  6  7  8 ...  40  41  42  43  44  45  46  47  48  49
2  5  0  1  2  3  4  5  6  7  8 ...  40  41  42  43  44  45  46  47  48  49
#for testing
print df.to_csv()
#write to file
#print df.to_csv('filename')

,a,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
1,1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
2,5,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49

编辑:

如果需要写DataFrame to_excel :

#write to excel, omit index of DataFrame
df.to_excel('test.xlsx', index=False)

关于python - 使用 pandas.to_csv(df) 仅在 Excel 中显示 numpy.array 的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881326/

相关文章:

java - 如何使边界数组索引的右侧正常工作?

python - numpy 查找矩阵行中所有数字对组合的乘积

python - 用 numpy 打破平局

python - 基于另一个列表对列表元素进行分组

python - 向量化 numpy 运算

python - python 中的 re.search 正则表达式不起作用

python - 在 scikit-learn 中,ClassifierMixin 的 check_estimator

python - python中的猜谜游戏

python - 如何在 Tensorflow 中将小图像添加到大图像中?

php - 在 2 个不同的位置拆分/分解 PHP 字符串