Peg*_*rus 5 python dataframe pandas
我有一个 pandas DataFrame,其中包含一个长 np 数组作为元素之一。当我使用该函数将其写入 csv 时,to_csv()输出文件中的每一行都会分为多行。有没有办法抑制这种行为并让 DataFrame 的每一行只占用输出 csv 中的一行?
## Create Example Data Frame
fruit_veg = pd.DataFrame({"category":["fruit","vegetable"],
"items":[np.array(["apple","pear","banana","grapefruit","watermelon",
"lychee","dragonfruit","mango"]),
np.array(["asparags","cabbage","zuchinni","broccoli",
"cauliflower","carrot","celery"])]})
## Output to csv
fruit_veg.to_csv(r'/my/file/path/EXAMPLE_PROBLEM.csv')
Run Code Online (Sandbox Code Playgroud)
生成的 csv 文件(实际上)如下所示:
,category,items
0,fruit,"['apple' 'pear' 'banana' 'grapefruit' 'watermelon' 'lychee' 'dragonfruit'
'mango']"
1,vegetable,"['asparags' 'cabbage' 'zuchinni' 'broccoli' 'cauliflower' 'carrot'
'celery']"
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
,category,items
0,fruit,"['apple' 'pear' 'banana' 'grapefruit' 'watermelon' 'lychee' 'dragonfruit' 'mango']"
1,vegetable,"['asparags' 'cabbage' 'zuchinni' 'broccoli' 'cauliflower' 'carrot' 'celery']"
Run Code Online (Sandbox Code Playgroud)
linewidth通过在写入之前增加 numpy 来防止换行to_csv():
np.set_printoptions(linewidth=100000)
fruit_veg.to_csv('fruit_veg.csv')
Run Code Online (Sandbox Code Playgroud)
to_csv()写入数组的__str__()输出,默认情况下每 75 个字符包含一个换行符:
线宽:int,可选
用于插入换行符的每行字符数(默认 75)。
fruit_veg.loc[0, 'items'].__str__()
# "['apple' 'pear' 'banana' 'grapefruit' 'watermelon' 'lychee' 'dragonfruit'\n 'mango']"
Run Code Online (Sandbox Code Playgroud)
因此增加linewidthwithnp.set_printoptions()来防止 75 个字符的换行:
np.set_printoptions(linewidth=100000)
fruit_veg.loc[0, 'items'].__str__()
# "['apple' 'pear' 'banana' 'grapefruit' 'watermelon' 'lychee' 'dragonfruit' 'mango']"
Run Code Online (Sandbox Code Playgroud)
csv 将根据需要输出:
fruit_veg.to_csv('fruit_veg.csv')
# ,category,items
# 0,fruit,['apple' 'pear' 'banana' 'grapefruit' 'watermelon' 'lychee' 'dragonfruit' 'mango']
# 1,vegetable,['asparags' 'cabbage' 'zuchinni' 'broccoli' 'cauliflower' 'carrot' 'celery']
Run Code Online (Sandbox Code Playgroud)