python列表DataFrame&Series问题
万能的吾爱,请教各路大神:我想把它转成
请问如何操作???方法越多越好
转成字符串来乘,然后再转回float,结果却不是我需要的。。。
df['z_price'] = df['price'].astype(str)
data = []
for x, y in zip(df['z_price'], df['quantity']):
list_dat = x * y
data += list_dat
print(data)
['2', '.', '1', '2', '.', '1', '2', '.', '2', '2', '.', '3', '2', '.', '3', '2', '.', '3', '1', '.', '8']
请各路大神指点,谢谢 本帖最后由 zxc9989 于 2022-4-19 10:26 编辑
一:import pandas as pd
data = pd.DataFrame({'price':, 'quantity':})
new_data = data['price'].repeat(data['quantity'])
new_data.index = range(1, new_data.shape+1)
print(new_data)
二(生成器):
import pandas as pd
def repeat(data:pd.DataFrame):
for item in data.iterrows():
yield from (item['price'] for _ in range(int(item['quantity'])))
data = pd.DataFrame({'price':, 'quantity':})
data = pd.Series(repeat(data))
print(data) 把两列数据提取为列表,参考tolist()
然后拼接到同一个列表,写入df中的一列,重制index
方法二
把两列分别转为两个df
使用concat拼接
pd.concat(,axis=0)# 合并,与merge的区别,自查(特别注意要使用[]) d8349565 发表于 2022-4-18 22:07
把两列数据提取为列表,参考tolist()
然后拼接到同一个列表,写入df中的一列,重制index
补充
df也可以使用round方法设置保留多少位小数点 d8349565 发表于 2022-4-18 22:09
补充
df也可以使用round方法设置保留多少位小数点
d1 = df['price'].tolist()
d2 = df['quantity'].tolist()
d3 = d1 + d2
print(d3)
结果不对哦。。。 单价2.1对应的数量是2,单价2.2对应的数量是1,单价2.3对应的数量是3,单价1.8对应的数量是1
我想得到一组这样的数据:
本帖最后由 wuliandang 于 2022-4-18 23:46 编辑
import pandas as pd
# 源数据
source_index =
source_data = pd.DataFrame({'price':,'quantity':},index=source_index)
# source_data
target_data = []
# 以正常人的思维,一个一个元素添加到列表
for i in source_index:# 遍历行
for j in range(source_data['quantity']):# 遍历从0~quantuty的值
target_data.append(source_data['price'])# 弄到列表里
print(target_data)
# print(pd.Series(target_data)) wuliandang 发表于 2022-4-18 23:39
import pandas as pd
# 源数据
source_index =
for j in range(source_data['quantity']):# 遍历从0~quantuty的值
TypeError: 'Series' object cannot be interpreted as an integer
出现这样的错误 lizy169 发表于 2022-4-19 08:37
for j in range(source_data['quantity']):# 遍历从0~quantuty的值
TypeError: 'Series' object c ...
因为他没取索引,加个loc就可以了,也可以像下面一样,用一重循环。
import pandas as pd
source_index =
source_data = pd.DataFrame({'price':,'quantity':},index=source_index)
target_data = []
""" for i in source_index:
for j in range(source_data['quantity'].loc):
target_data.append(source_data['price'].loc) """
for i in source_index:
target_data.extend(.loc] * source_data['quantity'].loc)
print(pd.Series(target_data)) 本帖最后由 nanhai31 于 2022-4-19 09:19 编辑
wuliandang 发表于 2022-4-18 23:39
import pandas as pd
# 源数据
source_index =
这样吧应该是
页:
[1]
2