如何在Python中将文本和数字转换为数据框?

时间:2019-07-03 11:06:15

标签: python pandas

我有一个包含支出信息的文本文档。我想使用pandas和Python 3将文本转换为具有两列的数据框,而不必通过将相同的名称合并为一行并添加各自的数量以产生一个总数来重复行名称。

原始的“ spending.txt:”

CATEGORY       TOTAL

shaving        350  
coffee         100  
food           350  
transport      100  

所需的输出数据帧:

{{1}}

3 个答案:

答案 0 :(得分:1)

这应该做到:

df = pd.read_csv('spending.txt', header=None, sep='\s+')
df.columns = ['category', 'total']

df.groupby('category', as_index=False).sum()

    category  total
0     coffee    100
1       food    350
2    shaving    350
3  transport    100

答案 1 :(得分:0)

读入数据

function someFunctionName(arr) {

  ...

  var rVals = SpreadsheetApp.getActiveSpreadsheet().getRange(arr).getValues();
  var payload = JSON.stringify({
    'rows': rVals
  });

  var payload = JSON.stringify({
    'rows': arr
  });

  ...
}

temp = StringIO("""  
shaving 150
shaving 200
coffee 100
food 350
transport 60
transport 40
""")

df = pd.read_csv(temp, sep='\s+', engine='python', header=None)

输出

df.groupby(0).sum().reset_index().rename({0:'category',1:'total'}, axis=1)

答案 2 :(得分:0)

  1. 使用read_csv读取文件
  2. 申请者
df = pd.read_csv('test.txt', sep=" ", header=None)
df.rename(columns={0:'category',1:'Total'},inplace=True)

final_df = df.groupby(['category'],as_index=False)['Total'].sum()
print(final_df)
     category  Total
0     coffee    100
1       food    350
2    shaving    350
3  transport    100