我试图从一个数据帧列中提取每个唯一条目的数量并将其存储为新的数据帧,如下所示:
输入
sample_name
sample1
sample2
sample2
sample3
sample3
sample3
Run Code Online (Sandbox Code Playgroud)
所需输出
sample_name count
sample1 1
sample2 2
sample3 3
Run Code Online (Sandbox Code Playgroud)
编辑 我猜这会因为没有显示我尝试过的内容而被否决,因此对于可能发现自己处于相同情况的其他用户来说,这就是我停滞不前的地方:
给定输入数据帧,我能够提取唯一的条目:
input_df["sample_name"].unique() # ['sample1', 'sample2', 'sample3']
Run Code Online (Sandbox Code Playgroud)
以及出现的次数(不是每个唯一条目):
input_df.groupby("sample_name")["sample_name"].transform("count")
Run Code Online (Sandbox Code Playgroud)
哪个输出
0 1
1 2
2 2
3 3
4 3
5 3
Run Code Online (Sandbox Code Playgroud)
我没有弄清楚如何提取每个唯一条目的计数。
我在使用memcpy从缓冲区中提取数据时遇到了一些困难.
首先,我将一些变量存储到缓冲区中:
int l1_connect(const char* hostname, int port) {
// Variables to be stored in the buffer
char *msg = "Hi, I'm a message"; // strlen(msg) == 17
uint16_t sender_id = htons(1); // sizeof(sender_id) == 2
uint16_t packet_size = htons(sizeof(packet_size)+sizeof(sender_id)+strlen(msg)); // sizeof(packet_size) == 2
// Checking values
printf("l1_connect():\nsender_id: %d, packet_size: %d\n\n", ntohs(sender_id), ntohs(packet_size));
// sender_id == 1, packet_size == 21
// The buffer
char buf[100];
// Copying everything
memcpy(&buf, &sender_id, sizeof(sender_id));
memcpy(&buf+sizeof(sender_id), &packet_size, sizeof(packet_size));
memcpy(&buf+sizeof(sender_id)+sizeof(packet_size), &msg, strlen(msg));
// Passing buf …Run Code Online (Sandbox Code Playgroud) 是否有可能制造熊猫.如果在输入文件中找不到usecols中指定的列,read_csv()会引发错误吗?例如,在下面的示例中,我希望Pandas引发异常,因为输入文件中没有名为"hello"的列:
import pandas as pd
# Write dummy-data
csv = r"""col1,col2,col3
one,two,three"""
with open("data.csv", "w") as out:
out.write(csv)
# Read dummy-data to DF
df = pd.read_csv("data.csv", usecols=["col1", "col2", "hello"])
print df.to_string(index=False)
Run Code Online (Sandbox Code Playgroud)
输出:
col1 col2 col3
one two NaN
Run Code Online (Sandbox Code Playgroud)
所以Pandas读取文件中的第三列名称("col3")并用NaN填充它,而不是引发"hello"不存在的错误.我希望在阅读文件时得到通知,而不是在将文件读入内存后验证文件内容.
我有一个包含浮点数字符串的数据帧列,我想删除适用的尾随".0".但是,在执行操作时df["numbers"].str.replace(".0", ""),字符串"10.0"将被完全删除,而不是替换为"10".这似乎只影响数字10,100等.
MWE:
import pandas as pd
df = pd.DataFrame({"numbers": ["1.0", "10.0", "10.1", "100.0", "100.1", "99.0"]})
print df
# numbers
# 0 1.0
# 1 10.0
# 2 10.1
# 3 100.0
# 4 100.1
# 5 99.0
print df.numbers.str.replace(".0", "")
# 0 1
# 1
# 2 .1
# 3 0
# 4 0.1
# 5 99
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是按预期工作?另请注意,使用此方法将"10.1"更改为".1",这很奇怪.