我继承了一个项目,我需要以下列格式向表中添加数据。
>
我在一个数组中获得的内容如下:
import pandas as pd
df = pd.read_fwf('old_csv_file')
df.Name = df.Name.str.title()
df.to_csv('new_csv_file', index=False, sep='\t')
我需要为每个健身级别分组,并添加以下3个记录/行:
Fitness101,FT101,EA101,RX101
实现这一目标的最佳方法是什么?
我尝试了几个if / while / foreach语句/循环,但没有运气。
是否可以使用动态数组名称,或者我是否将此更复杂?
感谢。
如果我打印数组,它看起来像这样:
Fitness101,FT101
Fitness101,EA101
Fitness101,RX101
Fitness102,FT102
Fitness102,EA102
Fitness102,RX102
Fitness103,FT103
Fitness103,EA103
Fitness103,RX103
答案 0 :(得分:0)
与此类分组问题一样,您可以将要分组的列用作结果数组中的键。如果您使用以下格式的数组开头:
$your_array = [
['Fitness101','FT101'],
['Fitness101','EA101'],
// etc.
];
然后就会这样:
foreach ($your_array as $row) {
$result[$row[0]][0] = $row[0]; // write or overwrite the first column
$result[$row[0]][] = $row[1]; // append the subsequent columns
}
此处$row[0]
是带有“Fitness101”等的第一列,当您将其用作$result
数组中的键时,您将把每个值添加到列中在该键指示的行中,因此它们将按照您想要的输出组合在一起。
如果你有一个字符串数组,那么它几乎是相同的,只是首先爆炸该行。
$your_array = [
'Fitness101,FT101',
'Fitness101,EA101',
// etc.
];
foreach ($your_array as $row) {
$row = explode(',', $row);
$result[$row[0]][0] = $row[0];
$result[$row[0]][] = $row[1];
}
答案 1 :(得分:-1)
假设您的输入格式如下:
$entries = [
"Fitness101,FT101",
"Fitness101,EA101",
"Fitness101,RX101",
"Fitness102,FT102",
"Fitness102,EA102",
"Fitness102,RX102",
"Fitness103,FT103",
"Fitness103,EA103",
"Fitness103,RX103"
];
$levels = array();
foreach ($entries as $entry) {
list($level, $class) = explode(',', $entry);
if (!isset($levels[$level])) {
$levels[$level] = $level;
}
$levels[$level] .= ','.$class;
}
$levels = array_values($levels);
echo json_encode($levels);
// Prints:
// ["Fitness101,FT101,EA101,RX101","Fitness102,FT102,EA102,RX102","Fitness103,FT103,EA103,RX103"]