我有一个从Tableau导入的文件,我已经手动转换过了(为了去除代码中无法处理的特殊字符和不需要的列)。
我想做的是不必手动处理它,但我找不到解决方案。
从原来的Excel文件,我只需要三列我会命名为A,B和C一旦你删除所有无用的列,它会看起来像这样的东西(我不写其他列,但我们必须摆脱他们)。
- 重要提示:在列C中,它不是空格,而是一个特殊字符:**
- 重要提示:在列C中,它不是空格,而是一个特殊字符:**
| A类|乙|C级|
| - ------|- ------|- ------|
| 项目名称|参考文献1|一百一十一元|
| * 与上述细胞融合 | 与上述细胞融合 *|15 214美元|
| * 与上述细胞融合 | 与上述细胞融合 *|462 134美元|
| * 与上述细胞融合 | 与上述细胞融合 *|七万零九百元|
| 项目名称2|参考文献2|787 741美元|
| * 与上述细胞融合 | 与上述细胞融合 *|四万一千四百一十四元|
| * 与上述细胞融合 | 与上述细胞融合 *|462 134美元|
| * 与上述细胞融合 | 与上述细胞融合 *|四千五百元|
| * 与上述细胞融合 | 与上述细胞融合 *|二千四百一十五元|
| 项目名称3|参考文献3|一百一十一元|
| 项目名称4|参考文献4|六十四万二千八百七十四元|
- 编辑:融合细胞截图:**
在最终文件中,我需要通过对C volumn中的值求和,使所有行成为一行,并将结果放在指示项目名称的行中。
提前感谢您的建议!
下面是我转换文件的实际代码(是的,我导入了一个csv,但原始文件是Excel,csv是在我手动转换Excel文件之后:
elif typeOfFile == "9":
#Import Excel file
DataMonthly = pd.read_csv (filename, usecols = ['A', 'B', 'C'], sep=';')
# Select only Wanted Data
df=pd.DataFrame(DataMonthly)
#Create a "DPAC" column and fill it with the specified code of the entity
df['DPAC'] = 'code'
firstCol = df.pop('DPAC')
df.insert(0, 'DPAC', firstCol)
#Create an 'Item' Column
df['Item'] = np.nan
firstCol = df.pop('Item')
df.insert(1, 'Item', firstCol)
df.columns.values[2] = 'A'
df.columns.values[3] = 'B'
#Create a 'Segment' Column
df['Segment'] = ''
firstCol = df.pop('Segment')
df.insert(4, 'Segment', firstCol)
#Create an 'EndCustomerCountry' Column
df['EndCustomerCountry'] = ''
firstCol = df.pop('EndCustomerCountry')
df.insert(5, 'EndCustomerCountry', firstCol)
df.columns.values[6] = 'C'
#Create a 'SubSegment' Column
df['SubSegment'] = ''
firstCol = df.pop('SubSegment')
df.insert(7, 'SubSegment', firstCol)
#Create a 'TechnologyName' Column
df['TechnologyName'] = ''
firstCol = df.pop('TechnologyName')
df.insert(8, 'TechnologyName', firstCol)
#Define cols
new_cols = ['DPAC', 'Item', 'A', 'B', 'Segment', 'EndCustomerCountry', 'C', 'SubSegment', 'TechnologyName']
df=df.reindex(columns=new_cols)
#Clean "C" column
df['C'] = df['C'].str.replace(r'\s', '')
df['C'] = df['C'].str[1:]
print(df['C'])
# aggregation_functions = {'C': 'sum'}
# df = df.groupby(df['B']).aggregate(aggregation_functions)
#Create Dataframe
df = pd.DataFrame(data=df).reset_index(drop=True)
if file_exists:
df.to_csv ('C:/Program Files/Data_Arranger/Output Files/Monthly.csv', mode='a', header=False, index=False)
else:
df.to_csv ('C:/Program Files/Data_Arranger/Output Files/Monthly.csv', mode='a', header=True, index=False)
1条答案
按热度按时间xwbd5t1u1#
假设您通过读取Excel/CSV文件获得的 Dataframe
df
类似于你可以试试
得到