如何获取csv中每列字符串的平均长度?

yal*_*man 6 python csv python-3.x

我有一个 csv,看起来像这样:

someFile.csv

Header1 Header2 Header3
aa      aaa     a
bbbb    bbbbbb  aa
Run Code Online (Sandbox Code Playgroud)

我想计算每列中的平均字符串长度并创建结果的 csv。这就是示例中的样子:

results.csv

Header1 Header2 Header3
3       4.5     1.5
Run Code Online (Sandbox Code Playgroud)

我一直在尝试在 Python 中使用 csv 库,但没有成功。有没有一种简单的方法可以实现这一点?

Pin*_*ang 16

你可以试试熊猫。如果您没有安装 pandas,请pip install pandas安装 pandas。

import pandas as pd
# df = pd.read_csv('my_csv.csv')
df = pd.DataFrame([['aa', 'aaa', 'a'], ['bbbb', 'bbbbbb', 'aa']], 
                  columns=['Header1', 'Header2', 'Header3'])
result = pd.DataFrame([[]])
for col in df:
    result[col] = df[col].apply(len).mean()

result.to_csv('result.csv')
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


blh*_*ing 2

您可以使用zip行和map列来计算平均值:lenstatistics.mean

import csv
from statistics import mean
with open('someFile.csv', 'r', newline='') as f, open('results.csv', 'w', newline='') as output:
    reader = csv.reader(f, delimiter=' ', skipinitialspace=True)
    headers = next(reader)
    writer = csv.writer(output, delimiter = ' ')
    writer.writerow(headers)
    writer.writerow([mean(map(len, col)) for col in zip(*reader)])
Run Code Online (Sandbox Code Playgroud)